Знает ли mpirun, больше или меньше запрошенное количество ядер, чем количество ядер в узле?

Я рассматриваю, какая программа запуска процессов, от mpirun до srun, лучше оптимизирует ресурсы. Допустим, у одного вычислительного узла в кластере всего 16 ядер, и у меня есть задание, которое я хочу выполнить, используя 10 процессов.

  1. Если я запущу его с помощью mpirun -n10, сможет ли он определить, что в моем запросе меньше ядер, чем доступно на каждом узле, и автоматически назначит все 10 ядер из одного узла? В отличие от srun, в котором -N <number> указывает количество узлов, mpirun, похоже, не имеет такого флага. Я думаю, что запуск всех процессов в одном узле может сократить время связи.

  2. В приведенном выше примере предположим, что каждый узел имеет 2 процессора, а ядра распределены поровну, поэтому 8 ядер на процессор и в спецификации указано, что на каждый узел приходится 48 ГБ памяти (или 24 ГБ на процессор или 3 ГБ на ядро). И предположим, что каждому порожденному процессу в моей работе требуется 2,5 ГБ, поэтому все процессы будут использовать 25 ГБ. Когда говорят, что программа превышает предел памяти, это когда общая требуемая память:

    • exceeds per node memory (hence my program is good, 25 GB < 48 GB), or
    • превышает объем памяти ЦП (следовательно, моя программа плохая, 25 ГБ ›24 ГБ), или

    когда объем памяти на процесс превышает объем памяти ядра (следовательно, моя программа хороша, 2,5 ГБ ‹3 ГБ)?


person nougako    schedule 28.10.2020    source источник


Ответы (1)


mpirun не имеет информации о ресурсе кластера. Он не будет запрашивать ресурсы; вы должны сначала запросить выделение памяти, обычно это sbatch или salloc, а затем Slurm настроит среду так, чтобы mpirun знал, на каком узле (ах) запускать процессы. Итак, вы должны взглянуть на параметры sbatch и salloc, чтобы создать запрос, соответствующий вашим потребностям. По умолчанию Slurm пытается «упаковать» задания на минимальном количестве узлов.

srun также может работать в распределении, созданном sbatch или salloc, но он также может выполнять запрос самостоятельно.

person damienfrancois    schedule 28.10.2020
comment
Я не знал, что mpirun также может работать на ресурсах, подготовленных slurm, все это время я всегда использую PBS с mpirun (или mpiexec) и sbatch с srun. - person nougako; 28.10.2020
comment
Дополнительную информацию см. здесь - person damienfrancois; 28.10.2020