使用物理内核或逻辑内核节省 JULIA_NUM_THREADS
Saving JULIA_NUM_THREADS with physical cores ot logical cores
我需要初始化环境变量来并行求解微分方程。我知道如何在windows中创建一个系统变量,我想问的是我应该用哪个数字初始化这个变量。我有 6 个核心 CPU,但在包括逻辑核心后它变成了 12。那么我应该用 6 还是 12 初始化它以获得更好的性能?
此外,当我 运行 命令 Base.Sys.CPU_THREADS
时,我得到 12,但是当我 运行 命令 Threads.nthreads()
时,我得到 1.
另外,想问一下哪一个是最佳的,将 JULIA_NUM_THREADS
保存为 6 或 12?
你总是可以 运行 Julia 与 --threads auto
选项
julia --threads auto
你会看到它正在分配所有可用的逻辑线程(我的机器的情况)
julia> Threads.nthreads()
8
现在“最佳线程数是多少”这个问题要复杂得多。经验法则是使用最多约 16 个线程的逻辑核心数。根据我的经验,当您拥有一台具有更高并行度的机器时,多处理性能会更好(再次取决于用例场景)。
在这样的决定中 BenchmarkTools
是你最好的朋友。
另一件需要注意的事情是硬件限制 - 如果您的笔记本电脑有 8 个逻辑内核,并且您 运行 它长时间处于多线程状态,它会过热,您最终需要一个新的笔记本电脑(我已经用这种方式烧毁了三台笔记本电脑)。
我需要初始化环境变量来并行求解微分方程。我知道如何在windows中创建一个系统变量,我想问的是我应该用哪个数字初始化这个变量。我有 6 个核心 CPU,但在包括逻辑核心后它变成了 12。那么我应该用 6 还是 12 初始化它以获得更好的性能?
此外,当我 运行 命令 Base.Sys.CPU_THREADS
时,我得到 12,但是当我 运行 命令 Threads.nthreads()
时,我得到 1.
另外,想问一下哪一个是最佳的,将 JULIA_NUM_THREADS
保存为 6 或 12?
你总是可以 运行 Julia 与 --threads auto
选项
julia --threads auto
你会看到它正在分配所有可用的逻辑线程(我的机器的情况)
julia> Threads.nthreads()
8
现在“最佳线程数是多少”这个问题要复杂得多。经验法则是使用最多约 16 个线程的逻辑核心数。根据我的经验,当您拥有一台具有更高并行度的机器时,多处理性能会更好(再次取决于用例场景)。
在这样的决定中 BenchmarkTools
是你最好的朋友。
另一件需要注意的事情是硬件限制 - 如果您的笔记本电脑有 8 个逻辑内核,并且您 运行 它长时间处于多线程状态,它会过热,您最终需要一个新的笔记本电脑(我已经用这种方式烧毁了三台笔记本电脑)。