julia 在一个本地电脑 或者一个远程服务器上最多开几个线程能达到最快的速度?
你这个问题问得相当广泛,答案也会相应宽泛:因地制宜(It depends)。
首先,你需要了解你的机器上的CPU有多少个线程,俗称hardware threads。你可以在Julia中开10000个线程(>>硬件线程),但是这并不会让你的程序跑得更快。通常我们会选择Julia threads < hardware threads。
其次,不同的程序的最优线程数目是不一样的。它取决于
- 问题的规模(比如你需要算10个数还是10000个数)
- 算法的特性
- 硬件上对于每一个线程分配的stack的大小
- 其他因素
如果你想在具体问题中了解,最好的方式就是针对特定机器做一系列同样规模不同线程数的测试,根据测试结果来判断到底多少个线程是最优解。
1 个赞
去年冬季会议,有一个报告是讲并行计算,感兴趣去看看回放。
这里提到的物理线程可以用 Hwloc
查看
# using Pkg;Pkg.add("Hwloc")
using Hwloc
Hwloc.num_physical_cores()