我应该禁用超线程吗?

我应该禁用超线程吗?

我有一份大工作,我正在试验拓扑结构以查看什么可以产生更好的结果(使用ntasks、、等)我正在使用 slurm 作为我的工作队列管理器。ncores-per-cpunodes

我有两个节点(CentOS 7,使用 Bright 7 管理),每个节点都有 2xIntel(R) Xeon(R) CPU E5-2680 v3 @ 2.50GHz。因此,两个处理器有 12 个核心,全部超线程,所以我每个节点似乎有 48 个核心。(请参阅下面的处理器拓扑lstopo

我的问题:我应该在 bios 中禁用超线程,还是尝试在 SLURM 中禁用它?或者只是将我的系统视为拥有双核? 指定 --thread-per-core=1似乎没有效果。

我的工作是一个大型的环境模型,大量的 I/O,大量的矩阵计算等等,并且需要几天的时间才能运行。

我一直在读SLURM 常见问题解答,但仍然不清楚如何继续。

显示 NUMA 空间的处理器拓扑

答案1

基本上,如果您觉得禁用 HT 后,您的操作将受益于更自由的 L2/L3 缓存,请继续从 BIOS 中禁用 HT。

然而,如果有大量的小型操作可以并行运行,那么启用 HT 肯定会对你有益。

VMWare ESXi 和超线程

http://lifehacker.com/how-hyper-threading-really-works-and-when-its-actuall-1394216262

答案2

Slurm 按核心分配,SLURM 的设计目标是可移植性而非性能。因此,其分配方式是“请注意,即使在启用了超线程的系统上,资源通常也会按核心级别分配给作业(请参阅下面的注释)。两个不同的作业不会共享一个核心。”。它确实知道什么是超线程,并且可以启用它,但它专门查看每个插槽的核心数。它是开源的,我相信超线程优化是有序的。

相关内容