Запуск приложений OpenMPI/pthread с помощью slurm

На компьютерах Cray, таких как XE6, при запуске гибридного приложения MPI/pthreads через aprun существует параметр depth, который указывает количество потоков, которые может создать каждый процесс. Например,

aprun -N2 -n12 -d5

Каждый процесс может породить 5 потоков, которые будет распределять ОС.

Есть ли аналогичная опция при запуске приложений OpenMPI/pthread с помощью srun Slurm? Машина представляет собой общий кластер HP с процессорами Nehalem и межсоединением IB. Имеет ли значение, если уровень поддержки потоков только MPI_THREAD_FUNNELED?


person user510306    schedule 22.09.2011    source источник


Ответы (2)


Это сценарий, который я использую для запуска смешанного задания MPI-OpenMP. Здесь n — количество узлов, а t — количество потоков.

sbatch <<EOF
#!/bin/bash
#SBATCH --job-name=whatever
#SBATCH --threads-per-core=1
#SBATCH --nodes=$n
#SBATCH --cpus-per-task=$t
#SBATCH --time=48:00:00
#SBATCH --mail-type=END
#SBATCH [email protected]
#SBATCH --output=whatever.o%j

. /etc/profile.d/modules.sh
module load gcc
module unload openmpi
module load mvapich2

export OMP_NUM_THREADS=$t 
export LD_LIBRARY_PATH=/apps/eiger/Intel-CPP-11.1/mkl/lib/em64t:${LD_LIBRARY_PATH}

mpiexec -np $n myexe

EOF

Надеюсь, поможет

person mvalle    schedule 28.11.2011

Обычно вы выбираете количество процессов MPI с помощью --ntasks и количество потоков на процесс с помощью --cpu-per-task. Если вы запросите --ntasks=2 и --ncpus-per-task=4, то slurm выделит 8 процессоров либо на одном узле, либо на двух узлах по четыре ядра на каждом, в зависимости от доступности ресурсов и конфигурации кластера.

Если вы укажете --nodes вместо --ntasks, Slurm выделит один процесс на узел, как если бы вы выбрали --ntask-per-node=1.

person damienfrancois    schedule 28.11.2013