为什么 SLURM 没有按要求提供节点?
Why the SLURM doesn't provide the nodes as is requested?
我的情况是集群由 3 台 PC(Raspbian 和 slurm 18)组成,所有连接在一起并共享文件存储,挂载为 /storage
。
任务文件是/storage/multiple_hello.sh
:
#!/bin/bash
#SBATCH --ntasks-per-node=1
#SBATCH --nodes=3
#SBATCH --ntasks=3
cd /storage
srun echo "Hello World from $(hostname)" >> ./"$SLURM_JOB_ID"_$(hostname).txt
它是 运行 和 sbatch /storage/multiple_hello.sh
,预期的结果是在 /storage
中创建 3 个名为 120_node1.txt
、121_node2.txt
和 122_node3.txt
的文件(任意职位编号)自:
- 请求了 3 个节点
- 请求了 3 个任务
- 每个任务设置了 1 个节点的限制
实际输出:只创建了一个文件:120_node1.txt
如何让它按预期工作?
够奇怪了,srun --nodes=3 hostname
按预期工作,并且 returns:
node1
node2
node3
要获得预期结果,请将最后一行修改为
srun bash -c 'echo "Hello World from $(hostname)" >> ./"$SLURM_JOB_ID"_$(hostname).txt'
Bash 解析行的方式与您预期的不同。首先,$hostname
和$SLURM_JOBID
在分配的第一个节点(运行提交脚本的节点)展开,然后srun
是运行,并将其输出附加到文件中。您需要具体说明重定向 >>
是您希望 srun
执行的操作的一部分。通过上述解决方案,变量和命令扩展在每个节点上完成,以及重定向。
我的情况是集群由 3 台 PC(Raspbian 和 slurm 18)组成,所有连接在一起并共享文件存储,挂载为 /storage
。
任务文件是/storage/multiple_hello.sh
:
#!/bin/bash
#SBATCH --ntasks-per-node=1
#SBATCH --nodes=3
#SBATCH --ntasks=3
cd /storage
srun echo "Hello World from $(hostname)" >> ./"$SLURM_JOB_ID"_$(hostname).txt
它是 运行 和 sbatch /storage/multiple_hello.sh
,预期的结果是在 /storage
中创建 3 个名为 120_node1.txt
、121_node2.txt
和 122_node3.txt
的文件(任意职位编号)自:
- 请求了 3 个节点
- 请求了 3 个任务
- 每个任务设置了 1 个节点的限制
实际输出:只创建了一个文件:120_node1.txt
如何让它按预期工作?
够奇怪了,srun --nodes=3 hostname
按预期工作,并且 returns:
node1
node2
node3
要获得预期结果,请将最后一行修改为
srun bash -c 'echo "Hello World from $(hostname)" >> ./"$SLURM_JOB_ID"_$(hostname).txt'
Bash 解析行的方式与您预期的不同。首先,$hostname
和$SLURM_JOBID
在分配的第一个节点(运行提交脚本的节点)展开,然后srun
是运行,并将其输出附加到文件中。您需要具体说明重定向 >>
是您希望 srun
执行的操作的一部分。通过上述解决方案,变量和命令扩展在每个节点上完成,以及重定向。