Поиск ресурса для приложения OpenMP + MPI

В настоящее время я разрабатываю гибридную программу с использованием C ++. Я использую как openMP, так и MPI. Тем не менее, я не знаю, как указать количество процессоров и потоков для моей работы. Допустим, я хочу использовать 5 узлов, и мне нужен один процессор MPI на каждый узел, и мне нужно 24 потока на узел.

Вот как я представляю my_job прямо сейчас:

qsub -l select=5:ncpus=24:mpiprocs=5 -l place=scatter:exclhost my_job

и на my_job сценарий, я делаю это

#PBS -l select=5:ncpus=24:mpiprocs=5
export OMP_NUM_THREADS=24
mpic++ -O3 myprogram.cpp -o out -fopenmp -lquadmath -std=gnu++11
mpirun -n 5 ./out

Тем не менее, производительность очень низкая, что заставляет меня думать, что может быть проблема с расположением моих ресурсов.

Любое предложение?

0

Решение

в https://www2.cisl.ucar.edu/resources/computational-systems/cheyenne/running-jobs/pbs-pro-job-script-examples это было бы

#PBS -l select=5:ncpus=24:mpiprocs=1:ompthreads=24
2

Другие решения

Спасибо Gilles, я также забыл указать количество процессоров на узел при выполнении задания:

mpirun -n 5 -ppn 1 ./out

Более того, я добавил эту строку в my_job сценарий:

export IPATH_NO_CPUAFFINITY=1 // - tells the underlying software not to pin each process to one CPU core, which would effectively disable OpenMP parallelism.

оба решения улучшили производительность «много».

0

По вопросам рекламы [email protected]