X86 CPUs

When using SOL on X86 CPUs we strongly recommend to set the following OMP env vars.

export OMP_PROC_BIND=TRUE 
export OMP_NUM_THREADS=$(lscpu -b -p=Core,Socket | grep -v '^#' | sort -u | wc -l)

FAQ

SOL performance using X86 is really really bad, what can I do?
tl;dr; run once: python3 -m sol fix-omp --yes
Unfortunately some python packages (e.g., torch or sklearn) ship their own version of libgomp.so. This causes that the application uses multiple OpenMP runtimes, which can cause a series of problems. If you don't define OMP_NUM_THREADS, then only the very first loaded OpenMP runtime runs multi-threaded. Even worse, if you define OMP_NUM_THREADS, all runtimes run in parallel, but use different threadpools, so whenever you switch from one to the other, you will have significant overhead due to swapping the threads. The python3 -m sol fix-omp --yes command detects conflicting versions of libgomp.so and replaces them with a symlink to the system's own version of libgomp.so, so that all libraries use the same threadpool. If you need to run this fixing within your script, because you are using a fully automated process, then you can use:
import sol.bugfixes
sol.bugfixes.fix_omp()