Да, конечно; как правило, в таких системах есть инструкции, как это сделать, подобные этим .
Если у вас есть (скажем) 4x 4-процессорных задания, каждое из которых, как вы знаете, займет одинаковое количество времени, и (скажем) вы хотите, чтобы они выполнялись в 4 разных каталогах (чтобы выходные файлы было легче отслеживать), используйте амперсанд оболочки, чтобы запустить их в фоновом режиме, а затем дождаться завершения всех фоновых задач:
(cd jobdir1; myexecutable argument1 argument2) &
(cd jobdir2; myexecutable argument1 argument2) &
(cd jobdir3; myexecutable argument1 argument2) &
(cd jobdir4; myexecutable argument1 argument2) &
wait
(где myexecutable argument1 argument2
— это просто заполнитель для того, как вы обычно запускаете свою программу; если вы используете mpiexec
или что-то подобное, это идет туда так же, как вы обычно его используете. Если вы используете OpenMP, вы можете экспортировать переменную среды OMP_NUM_THREADS
перед первой строкой выше.
Если у вас есть ряд задач, которые не будут занимать одинаковое время, проще всего назначить больше, чем (скажем) 4 задачи выше, и позволить инструменту, такому как gnu parallel запускайте задания по мере необходимости, как описано в этот ответ.
person
Jonathan Dursi
schedule
08.11.2012