如何解决SLURM 阵列如何与 SBATCH 资源分配接口?
#!/bin/bash
#SBATCH -p RM-shared
#SBATCH -n 4
#SBATCH -t 24:00:00
#SBATCH --array=1-
我正在尝试启动一个阵列,对于阵列中的每个任务,我希望它在 RM 共享分区上使用 4 个内核。我这样做是否正确,或者这是否指定阵列输出的所有任务都必须共享 4 个内核?
我会为此提出一个单独的问题,但是由于某种原因,当我运行它时,$SLURM_ARRAY_TASK_ID
变量为空....
当我跑步时
echo "My SLURM_ARRAY_TASK_ID: " $SLURM_ARRAY_TASK_ID
在我的标题设置作业后,它返回
My SLURM_ARRAY_TASK_ID:
解决方法
首先,您使用 --cpus-per-task=4
而不是 ntasks
是正确的。其次,这可能是复制/粘贴错误,但您的 --array
行不完整
#SBATCH --array=1-
应该
#SBATCH --array=1-10
例如对于 10 个作业的数组。
阵列中的每个作业将分配有 4 个不同的内核。并且作业将被独立调度,因此它们可以例如同时在 40 核节点上启动全部 10 个,或同时在 10 个不同节点上启动,或一次在一个 4 核节点上启动,或任何可能的中间组合取决于集群配置和队列中的作业。
,我没有正确调用脚本。打电话:
./ThisScript.sh
代替
sbatch ./ThisScript.sh
关于每个阵列作业的核心分配,一位帮助台人员说使用
#SBATCH --ntasks-per-node=4
代替
#SBATCH --cpus-per-task=4
但我不知道为什么...我希望 --ntasks-per-node=4
命令每个节点只需要运行 4 个作业,因此如果您的阵列中有 12 个作业,则需要 3 个完整节点。
--cpus-per-task=4
另一方面,会命令每个 CPU(每个 CPU 都有多个内核)只运行 4 个任务,因此如果您的阵列中有 12 个作业,它将需要 3 个 CPU(并且,如果您系统上的节点有 3 个或更多 CPU,则只需要 1 个节点)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。