Slurm: создать каталог на всех узлах

Я запускаю задание на параллельное выполнение с slurm. Эта работа требует определенной структуры каталогов, чтобы существовать в каждом узле, но если я использую mkdir в сценарии задания каталоги создаются только в первом узле. Как я могу убедиться, что каталоги созданы во всех узлах, используемых заданием?

2 ответа

Я думаю, я должен ответить сам. Это не идеальное решение, но в моем случае это сработало достаточно хорошо. В сценарии задания я использовал это до начала реальной работы:

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 У меня иногда возникали проблемы с каким-то каталогом, не существующим, поэтому добавили его просто для безопасности.

Проблема в том, что мне нужно знать, какие каталоги нужно создавать заранее, что возможно в моем случае, но может оказаться более сложным в других обстоятельствах.

Вы можете просто добавить

srun mkdir -p /directory/to/be/created

в вашем сценарии. Он может попытаться создать один и тот же каталог несколько раз в зависимости от конфигурации кластера, но все равно будет работать.

Другие вопросы по тегам