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
в вашем сценарии. Он может попытаться создать один и тот же каталог несколько раз в зависимости от конфигурации кластера, но все равно будет работать.