【发布时间】:2018-08-07 14:55:09
【问题描述】:
我在单个分区具有不同节点的集群上使用 slurm。具体来说,节点具有不同的# CPU。我的代码是用于参数扫描的单核应用程序,因此我想通过发送 32 个作业来充分使用(例如)32 CPU 节点。
如何选择具有指定 CPU 数量的节点(在命名分区内)?
我知道我的分区配置是通过
sinfo -e -p <partition_name> -o "%9P %3c %.5D %6t " -t idle,mix
PARTITION CPU NODES STATE
<partition_name> 16 63 mix
<partition_name> 32 164 mix
但如果我使用类似的提交脚本
[snip preamble]
#SBATCH --partition <partition_name> # resource to be used
#SBATCH --nodes 1 # Num nodes
#SBATCH -N 1 # Num cores per job
#SBATCH --cores-per-socket=32 # Cores per node
slurm 调度器说
sbatch: error: Socket, core and/or thread specification can not be satisfied
PS。一个小的更正:我获取分区信息的代码不是最好的。以防万一有人稍后查看这个问题,这里有一个更好的查询(使用 X,Y 表示套接字,核心计数),它有助于确定 damien 的出色答案解决的问题
sinfo -e -p <partition_name> -o "%9P %3c %.3D %6t %2X %2Y %N" -t idle,mix
【问题讨论】:
-
替代问题:如果将 32 作业脚本 a'la
for RUN_ID in seq RUN_ID_FIRST RUN_ID_LAST; do matlab -nojvm -singleCompThread -r "try myscript(RUN_ID); catch me; disp(' *** error'); end; exit" > ./result_RUN_ID & done发送到 16 核节点会发生什么? -
您使用的是什么
?因为如果你选择了 16-CPU 分区,它应该不起作用。 -
只有一个
并且该分区包含一堆具有不同 CPU 的不同节点。因此,我无法通过分区名称选择 32 CPU 节点,并希望提交资源请求,以确保我与分区中的适当节点匹配。
标签: slurm