<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">Уважаемые коллеги, обращаюсь за помощью к более опытным товарищам. Пытаюсь ускорить решение своей задачи, используя совмещенную схему распараллеливания по MPI и OpenMP. Вкратце, решается трехмерная стационарная задача переноса нейтронов итерационным методом верхней точечной релаксации (метод Гаусс-Зейделя). Я разбиваю пространство по высоте на слои (MPI), а внутри слоев логично и наиболее проще сделать распараллеливание цикла по OpenMP. <div class=""><span class="Apple-tab-span" style="white-space:pre"> </span><b class="">Используется ферма Basov</b>. Само по себе, в отдельности MPI и OpenMP работают нормально. Например внутри одно нода (думаю, это синоним вычислительного узла) на 1 процесс MPI  число нитей (threads) 2 и 4 дает соответственно увеличение скорости расчета на 13 и 37%. Опять же на одном ноде использование двух процессов MPI и 4 нитей соответственно дает увеличение скорости счета в 2.5 раза. Опытным путем выяснил, что использование большего числа нитей эффект не дает. однако, когда использую два нода с тем же числом MPI процессов эффективность гибридной схемы резко падает и даже скорость счета возрастает.</div><div class=""><span class="Apple-tab-span" style="white-space:pre"> </span>По идее использование Open MP имеет смысл, когда нити сидят на одной памяти (SMP), ну и впечатление, когда идет расчет на несколько вычислительных узлах, то система не связывает OpenMP нити эффективно.</div><div class=""><br class=""></div><div class="">скрипт с запросом ресурсов (2 MPI процесса на каждый вычислительный узел, каждый процесс рождает 4 нити OpenMP) в выглядит таким образом:</div><div class=""><br class=""></div><div class=""><div class=""><b class=""><i class="">#PBS -l nodes=2:ppn=16,walltime=00:00:30</i></b></div><div class=""><b class=""><i class=""><br class=""></i></b></div><div class=""><b class=""><i class="">cd ~/space</i></b></div><div class=""><b class=""><i class=""><br class=""></i></b></div><div class=""><b class=""><i class="">export OMP_NUM_THREADS=4</i></b></div><div class=""><b class=""><i class=""><br class=""></i></b></div><div class=""><b class=""><i class="">mpirun   -npernode 2  -cpus-per-proc 4 -np 4  ./hybrid.out</i></b></div></div><div class=""><br class=""></div><div class=""><br class=""></div><div class="">Надеюсь, кто нибудь подскажет идею.</div><div class=""><br class=""></div><div class="">С уважением,</div><div class="">ст. преп. каф. 5 НИЯУ МИФИ</div><div class="">Юрий Волков</div></body></html>