首页 > 解决方案 > 使用物理内核或逻辑内核保存 JULIA_NUM_THREADS

问题描述

我需要初始化环境变量以并行求解微分方程。我知道如何在windows中创建一个系统变量,我想问的是我应该用哪个数字来初始化这个变量。我有 6 个核心 CPU,但在包含逻辑核心后它变成 12 个。那么我应该用 6 还是 12 初始化它以获得更好的性能?另外,当我运行命令时Base.Sys.CPU_THREADS,我得到 12,但是当我运行命令时Threads.nthreads(),我得到 1。

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

标签: parallel-processingjulia

解决方案


您始终可以使用该--threads auto选项运行 Julia

julia --threads auto

您会看到它正在分配所有可用的逻辑线程(我的机器的情况)

julia> Threads.nthreads()
8

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

在这样的决定BenchmarkTools中是你最大的朋友。

需要注意的另一件事是硬件限制 - 如果您有 8 个逻辑内核的笔记本电脑并且多线程运行更长的时间,它会过热并且您最终需要一台新笔记本电脑(我已经烧毁了三台笔记本电脑)方式)。


推荐阅读