PBS/TORQUE: как отправить параллельное задание на несколько узлов?

Итак, прямо сейчас я отправляю задания в кластер с qsub, но они, похоже, всегда выполняются на одном узле. В настоящее время я запускаю их, делая

#PBS -l walltime=10
#PBS -l nodes=4:gpus=2
#PBS -r n
#PBS -N test

range_0_total = $(seq 0 $(expr $total - 1)) 

for i in $range_0_total
do
    $PATH_TO_JOB_EXEC/job_executable &
done
wait

Я был бы невероятно благодарен, если бы вы могли сказать мне, если я делаю что-то не так, или это просто мои тестовые задания слишком малы.


person Jules G.M.    schedule 17.06.2015    source источник


Ответы (1)


При вашем подходе вам нужно, чтобы цикл for проходил через все записи в файле, на который указывает $PBS_NODEFILE, а затем внутри вашего цикла вам понадобится «ssh $i $PATH_TO_JOB_EXEC/job_executable &».

Другой, более простой способ сделать это — заменить цикл for и подождать:

pbsdsh $PATH_TO_JOB_EXEC/job_executable

Это запустит копию вашей программы на каждом ядре, назначенном вашей работе. Если вам нужно изменить это поведение, взгляните на параметры, доступные на справочной странице pbsdsh.

person chuck    schedule 17.06.2015
comment
Случайно увидел этот пост и у меня есть дополнительный вопрос здесь - вы упомянули, что pbsdsh будет иметь одну копию программы на каждом узле - что, если каждая моя копия имеет разные имена переменных, пожалуйста? - person Helene; 12.05.2016