如何解决选择最多有 n 个 CPU 的节点
要通过 slurm 向集群提交作业,我可以使用 #SBATCH --ntasks-per-node={cpus}
指定作业需要多少 CPU。但是,这会将作业发送到至少这么多 CPU 的任何节点。这通常很好,但假设我在一个集群上,节点有 24 个 CPU 和 40 个 CPU。如果我提交一个 24 核的作业,其中一些将转到 40 个 CPU 节点,从而阻止在这些节点上进一步计算(除非他们碰巧要求 16 个或更少)。
有什么方法可以指定我希望节点最多具有一定数量的 CPU?我知道可以使用我接受的节点列表提交作业,但我希望有一种方法可以做到这一点,而无需将此列表手动插入到各种不同的作业脚本中。
解决方法
您可以尝试使用 --extra-node-info
参数来选择具有特定 CPU 配置的节点。
如果 24-CPU 节点有 2 个 12 个内核的插槽,每个内核有 1 个硬件线程(即禁用超线程或等效),您可以设置
--extra-node-info=2:12:1
这三个数字也可以在分隔选项中设置:
--sockets-per-node=<sockets>
--cores-per-socket=<cores>
--threads-per-core=<threads>
因此,如果 24 核节点和 40 核节点之间的区别因素是套接字的数量(例如 2 对 4),请使用 --sockets-per-node=2
。如果区分因素是每个插槽的核心数,请使用 --cores-per-socket=12
。
请注意,这些选项用于限制要使用的节点类型,但并未指定分配的大小。因此,--ntasks-per-node
参数仍然需要与上述选项结合使用。
如果您现在知道节点的 CPU 结构,请使用 sinfo
命令:
sinfo -Nl
并查找 S:C:T
列。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。