Hi all, I have two questions.
-
What are the recommended values of the env variables (
JULIA_NUM_THREADS
,MKL/OPENBLAS_NUM_THREADS
, …) if I want to speed up my code usingThreads.@threads
? -
To what should I set those variables (the former ones plus
addprocs(x)
) if, instead, I would like to use@distributed
orpmap
to get more performance?
The heaviest parts of my scripts usually involve diagonalizing very large Hermitian matrices and/or BLAS operations. Also (3.), is there any possibility to mix multithreading code within parallel loops and still improve performance, or should I avoid using multithreading when I am already using parallel and vice-verse?
For more information, the Julia version I am using is
>>> versioninfo()
Julia Version 1.1.0
Commit 80516ca202* (2019-01-21 21:24 UTC)
Platform Info:
OS: Linux (x86_64-linux-gnu)
CPU: Intel(R) Xeon(R) W-2145 CPU @ 3.70GHz
WORD_SIZE: 64
LIBM: libopenlibm
LLVM: libLLVM-6.0.1 (ORCJIT, skylake)
Environment:
JULIA_NUM_THREADS = 12
Searching for W-2145 CPU @ 3.70GHz
I reached this page, where it says I have 8 cores and 16 threads. Should the answer for 1. be JULIA_NUM_THREADS=16
and the answer for 2. be addprocs(8)
? What about MKL/OPENBLAS_NUM_THREADS
?