Код Petsc не имеет параллельного ускорения на платформе 2990WX - PullRequest
2 голосов
/ 06 июня 2019

Пока я запускаю свой код на старой платформе Intel Xeon (X5650@2.67 ГГц), эффективность параллелизма кажется хорошей, что ускорение на 80-95% ускоряется при удвоенном использовании процессора. Однако, когда я запускаю тот же код на платформе AMD 2990WX, я не могу получить никакого ускорения при любом количестве потоков.

Я так растерялся, что моя новая платформа AMD демонстрирует столь плохую параллельную эффективность, и я с трудом могу понять, где неправильные настройки в моем коде.

У меня есть C-код, основанный на библиотеке PetSc для решения очень большого разреженного линейного уравнения, параллельная часть в моем коде обеспечивается PetSc, которая автоматически использует MPI (я просто подстраиваю задачи построения матрицы для каждого процесса и выполняю не добавлять никакие другие подпрограммы связи).

Система вычислительной платформы - Centos7, версия библиотеки MPI - MPICH3, версия PetSc - 3.11. BLAS на платформе XEON включен в MKL, а BLAS на платформе AMD включен в библиотеку BLIS.

Пока программа работает на платформе AMD, я использую top, чтобы проверить работу процессора, и обнаружил, что загрузка ЦП фактически различается при разных настройках запуска:

для 32 процессов:

/usr/lib64/mpich/bin/mpiexec -n 32 ./${BIN_DIR}/main

для 64 процессов:

/usr/lib64/mpich/bin/mpiexec -n 64 ./${BIN_DIR}/main

на платформе XEON:

/public/software/Petsc/bin/petscmpiexec -n 64 -f mac8 ./${BIN_DIR}/main

с mac8 файлом:

ic1:8
ic2:8
ic3:8
ic4:8
ic5:8
ic6:8
ic7:8
ic8:8
...