1

我正在启动一项与 slurm 并行执行的工作。该作业需要在每个节点中存在一定的目录结构,但是如果我mkdir在作业脚本中使用,则仅在第一个节点中创建目录。如何确保在作业使用的所有节点中创建目录?

4

2 回答 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 回答