我正在尝试设置 slurmd 的测试实例,但似乎无法让它接受我的 CPU。
这是 lscpu 的输出:
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Address sizes: 46 bits physical, 48 bits virtual
Byte Order: Little Endian
CPU(s): 24
On-line CPU(s) list: 0-23
Vendor ID: GenuineIntel
Model name: 12th Gen Intel(R) Core(TM) i9-12900K
CPU family: 6
Model: 151
Thread(s) per core: 2
Core(s) per socket: 16
Socket(s): 1
Stepping: 2
CPU max MHz: 6700.0000
CPU min MHz: 800.0000
BogoMIPS: 6374.40
Flags: ...
现在,恕我直言,配置的明显选择是:
Sockets=1 CoresPerSocket=16 ThreadsPerCore=2
但是
slurmd: error: Thread count (24) not multiple of core count (16)
同样设置CPUs=16也不起作用
slurmd: error: Thread count (24) not multiple of core count (16)
slurmd: error: Node configuration differs from hardware: CPUs=16:24(hw) Boards=1:1(hw) SocketsPerBoard=1:1(hw) CoresPerSocket=16:16(hw) ThreadsPerCore=2:1(hw)
设置
ThreadsPerCore=1
不会改变任何内容。
我想我确实尝试了所有可能的设置组合,但由于检测到的数字或预期乘法结果不匹配,它总是失败。
那么,
如何让 slurm 相信我的 CPU 确实存在并且最好甚至可以启动?
您可以在节点定义行中设置
CPUs=24
,并设置config_overrides参数。
来自手册页:“如果设置,请考虑每个节点的配置为 slurm.conf 配置文件中指定的配置”
当守护进程似乎只信任自己的硬件检测时,为什么这些配置设置仍然存在?有效果吗?
我认为这一方面可以作为健全性检查,另一方面,它允许 slurm 控制器提前知道节点配置,这是在启动时构建其内部数据结构所需要的。
你解决这个问题了吗,即使我运行命令
slurmd -C
,它也显示同样的问题,如
NodeName=bti-asus slurmd: error: Thread count (28) not multiple of core count (20) CPUs=28 Boards=1 SocketsPerBoard=1 CoresPerSocket=20 ThreadsPerCore=1 RealMemory=31868 UpTime=2-17:10:32