我正在启动一项与 slurm 并行执行的工作。该作业需要在每个节点中存在一定的目录结构,但是如果我mkdir
在作业脚本中使用,则仅在第一个节点中创建目录。如何确保在作业使用的所有节点中创建目录?
问问题
1318 次
2 回答
1
我想我必须自己回答。这不是一个完美的解决方案,但在我的情况下它已经足够好了。在作业脚本中,我在真正的作业开始之前使用了这个:
for node in $(scontrol show hostnames $SLURM_NODELIST) ; do
srun -N 1-1 -n 1 -w $node mkdir -p /directory/to/be/created
done
sleep 60
中的节点列表$SLURM_NODELIST
是缩写的,带有scontrol
我得到全名的语句。如果没有该sleep
命令,我有时会遇到一些不存在的目录的问题,所以添加它只是为了安全。
问题是我需要提前知道需要创建哪些目录,这在我的情况下是可能的,但在其他情况下可能会更困难。
于 2013-08-29T07:04:29.247 回答
1
您可以简单地添加
srun mkdir -p /directory/to/be/created
在你的脚本中。根据集群配置,它可能会尝试多次创建相同的目录,但无论如何它都会起作用。
于 2013-10-22T20:23:14.440 回答