Slurm только с использованием всех процессоров на некоторых программах при использовании srun? - PullRequest
1 голос
/ 06 февраля 2020

У меня есть скрипт, определенный следующим образом:

#!/bin/sh

#SBATCH --nodes=1
#SBATCH --cpus-per-task=16
#SBATCH --mem 180000

./program1 --threads 16
./program2 --threads 16

Затем я отправляю свою работу с sbatch job.sh

Дело в том, что program1 использует все 16 ядер / процессор, но program2 делает используйте только 1 (оба предположительно являются многопоточными). Однако если я изменю сценарий так:

#!/bin/sh

#SBATCH --nodes=1
#SBATCH --cpus-per-task=16
#SBATCH --mem 180000

./program1 --threads 16
srun --mpi=openmpi ./program2 --threads 16

, то программа2 также использует все 16 ядер. Почему необходимо добавить этот «srun»?

В качестве дополнительной информации реализация многопоточности program2 выполняется с использованием std::async

...