Parallel processing 用物理核保存JULIA_NUM_线程而不是逻辑核

Parallel processing 用物理核保存JULIA_NUM_线程而不是逻辑核,parallel-processing,julia,Parallel Processing,Julia,我需要初始化环境变量来并行求解微分方程。我知道如何在windows中创建系统变量,我想问的是我应该用哪个数字初始化这个变量。我有6个核心CPU,但包括逻辑核心后,它变成了12个。所以我应该用6或12来初始化它以获得更好的性能吗? 同样,当我运行命令Base.Sys.CPU\u THREADS时,我得到12个线程,但当我运行命令THREADS.nthreads()时,我得到1个线程 另外,像哪一个是最佳的一样,将JULIA_NUM_THREADS保存为6或12?您始终可以使用--THREADS a

我需要初始化环境变量来并行求解微分方程。我知道如何在windows中创建系统变量,我想问的是我应该用哪个数字初始化这个变量。我有6个核心CPU,但包括逻辑核心后,它变成了12个。所以我应该用6或12来初始化它以获得更好的性能吗? 同样,当我运行命令
Base.Sys.CPU\u THREADS
时,我得到12个线程,但当我运行命令
THREADS.nthreads()
时,我得到1个线程


另外,像哪一个是最佳的一样,将JULIA_NUM_THREADS保存为6或12?

您始终可以使用
--THREADS auto
选项运行JULIA

julia --threads auto
您将看到它正在分配所有可用的逻辑线程(以我的机器为例)

现在,“最佳线程数是多少”的问题要复杂得多。经验法则是使用最多16个线程的逻辑核数。根据我的经验,当您有一台并行度更高的机器时,多处理的性能会更好(同样取决于用例场景)

在这样的决策中,
BenchmarkTools
是您最大的朋友

另一件需要注意的事情是硬件的局限性——如果你有一台有8个逻辑核的笔记本电脑,并且你长时间运行多线程,它会过热,你最终需要一台新的笔记本电脑(我用这种方式烧掉了三台笔记本电脑)

julia> Threads.nthreads()
8