我在一台电脑(实际上是几台电脑)上进行了一些科学计算,我想知道一次应该提交多少份工作。lscpu 显示:
CPU(s): 8
On-line CPU(s) list: 0-7
Thread(s) per core: 2
Core(s) per socket: 4
Socket(s): 1
歧义是“线程”。我搜索了网络并了解了一些相关信息。但是我还是觉得很困惑(据说要提交多少工作取决于)。我不关心机器的细节。例如,现在我有一个可执行文件。如果我直接运行它,它会花费大约 10 分钟。假设现在我有 800 个需要运行。我应该一次运行 4 个还是 8 个以降低总时间成本?
如果这台 PC 有 Intel CPU,那么每个内核的线程数肯定表示超线程。
https://en.wikipedia.org/wiki/Hyper-threading
.
这取决于。有些任务在超线程下运行得更快,有些则不然。你必须自己测试一下。
我会使用 GNU Parallel 来处理这个问题。
https://www.gnu.org/software/parallel/
如果您有
.
需要处理的文件列表,这将起作用:如果您之前的测试表明它使用超线程运行得更快,那么将“4”更改为“8”。
编辑:忘了提到有时在 BIOS 中禁用HT 时程序运行得更快。