不可能的CPU核心/线程配置

问题描述 投票:0回答:2

我正在尝试设置 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
不会改变任何内容。

我想我确实尝试了所有可能的设置组合,但由于检测到的数字或预期乘法结果不匹配,它总是失败。

那么,

  1. 如何让 slurm 相信我的 CPU 确实存在并且最好甚至可以启动?
  2. 当守护进程似乎只信任自己的硬件检测时,为什么这些配置设置仍然存在?有效果吗?
slurm
2个回答
0
投票

如何让 slurm 相信我的 CPU 确实存在并且最好甚至可以启动?

您可以在节点定义行中设置

CPUs=24
,并设置config_overrides参数。

来自手册页:“如果设置,请考虑每个节点的配置为 slurm.conf 配置文件中指定的配置”

当守护进程似乎只信任自己的硬件检测时,为什么这些配置设置仍然存在?有效果吗?

我认为这一方面可以作为健全性检查,另一方面,它允许 slurm 控制器提前知道节点配置,这是在启动时构建其内部数据结构所需要的。


0
投票

你解决这个问题了吗,即使我运行命令

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
© www.soinside.com 2019 - 2024. All rights reserved.