[mephi-hpc] Hybrid MPI + OpenMP

Волков Юрий Николаевич YNVolkov at mephi.ru
Sun Sep 18 13:34:48 MSK 2016


Уважаемые коллеги, обращаюсь за помощью к более опытным товарищам. Пытаюсь ускорить решение своей задачи, используя совмещенную схему распараллеливания по MPI и OpenMP. Вкратце, решается трехмерная стационарная задача переноса нейтронов итерационным методом верхней точечной релаксации (метод Гаусс-Зейделя). Я разбиваю пространство по высоте на слои (MPI), а внутри слоев логично и наиболее проще сделать распараллеливание цикла по OpenMP.
Используется ферма Basov. Само по себе, в отдельности MPI и OpenMP работают нормально. Например внутри одно нода (думаю, это синоним вычислительного узла) на 1 процесс MPI  число нитей (threads) 2 и 4 дает соответственно увеличение скорости расчета на 13 и 37%. Опять же на одном ноде использование двух процессов MPI и 4 нитей соответственно дает увеличение скорости счета в 2.5 раза. Опытным путем выяснил, что использование большего числа нитей эффект не дает. однако, когда использую два нода с тем же числом MPI процессов эффективность гибридной схемы резко падает и даже скорость счета возрастает.
По идее использование Open MP имеет смысл, когда нити сидят на одной памяти (SMP), ну и впечатление, когда идет расчет на несколько вычислительных узлах, то система не связывает OpenMP нити эффективно.

скрипт с запросом ресурсов (2 MPI процесса на каждый вычислительный узел, каждый процесс рождает 4 нити OpenMP) в выглядит таким образом:

#PBS -l nodes=2:ppn=16,walltime=00:00:30

cd ~/space

export OMP_NUM_THREADS=4

mpirun   -npernode 2  -cpus-per-proc 4 -np 4  ./hybrid.out


Надеюсь, кто нибудь подскажет идею.

С уважением,
ст. преп. каф. 5 НИЯУ МИФИ
Юрий Волков
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mephi.ru/pipermail/hpc/attachments/20160918/891b8707/attachment.html>


More information about the hpc mailing list