Как выполнить скрипт на нескольких узлах с помощью Slurm?

Ad.1.:

find /var/kafka/kafka-logs -type f -name "*.index" -exec rm -v {} \;

La respuesta a la segunda pregunta se puede encontrar aquí:¿Cómo integrar el comando mv después del comando find? .

0
06.03.2020, 09:00
1 ответ

Вы хотите включить srunв цикл for, чтобы запросить узел в вашем скрипте. Если мы предположим, что у вас есть пять подмножеств, вы можете использовать что-то вроде:

for i in `seq 1 5`; do
  srun \
    -N1 \
    --mem=124G \
    --cpus-per-task=32 \
    Rscript my_script.R --subset $i --file $1 > "$OUTPUT-$i" &
done

wait

Обратите внимание на команду &и wait. Это позволит этим процессам работать параллельно, и SLURM будет ждать, пока все в этом цикле for не завершится.

Вам также необходимо убедиться, что спецификация вашего выходного файла может быть записана параллельно, если вы выберете этот маршрут.Выше я добавил указатель к вашей переменной $OUTPUT, которая давала бы разные файлы для каждого подмножества. Вам нужно будет добавить некоторый код после команды wait, чтобы объединить ваши выходные данные в один большой файл.

Думаю, вы также захотите указать значение --nodesв файле sbatch, указывающее общее количество узлов, которые будет использовать ваша работа.

Другим вариантом может быть включение всего вашего кода задания в сценарий оболочки, который принимает аргументы строки команды -, и вызывать его из цикла for, используя srunв вашем файле sbatch. бывший.

for i in `seq 1 5`; do
  srun -N1 --mem=124G --cpus-per-task=32 bash runAnalysis.sh --subset $i &
done

wait
0
28.04.2021, 23:33

Теги

Похожие вопросы