Объединение gnu parallel и mpirun: как обеспечить максимальное количество ядер?

Объединение gnu parallel и mpirun: как обеспечить максимальное количество ядер?

У меня есть машина с 32 ядрами, на которой я хочу запустить несколько заданий mpi с переменным числом ядер (потому что этого требует задача). Есть ли способ заставить gnu parallel знать число заданий mpi для управления, когда запускать каждое задание?

Пример: Предположим, мне нужно запустить много (200) заданий со следующим количеством заданий mpi:

NMPI=(2 2 2 4 4 4 4 6 7 10 12 24 32)

Поэтому изначально я хочу запустить только первые 8 элементов массива (поскольку их общая сумма меньше общего числа ядер, 32), а затем последовательно запустить каждое другое задание постепенно, как только каждое из первых будет завершено, не превышая предел в 32 общих одновременных задания mpi. Например, предположим, что первые 8 процессов были запущены, а первый только что завершился (для первого NMPI[0] == 2). Тогда parallel не должен запускать ничего нового, пока не освободится достаточно процессоров, поскольку следующее задание имеет NMPI[8]==7 и, следовательно, превысит максимальный предел в 32 ядра. Или есть способ для parallel улучшить запуск заданий, например, запустить сначала последнее задание mpi (32 ядра), затем последнее минус одно плюс первые три и так далее?

Заранее спасибо за ваши советы.

решение1

Измените порядок массива, начав с самого большого задания.

Может быть, вы можете использовать --load 100%и --delay 10sтаким образом убедиться, что задание использует все ядра, прежде чем начинать следующее?

Связанный контент