Эффективность выполнения тестов NAS NPB 3.3

Результаты получены в Мае 2017 г.

C помощью языка Fortran-DVMH были распараллелены тесты производительности из пакета NAS Parallel Benchmarks, нацеленные на проверку возможностей высокопараллельных суперкомпьютеров. Они были разработаны в рамках программы NASA Numerical Aerodynamic Simulation Program и поддерживаются в NASA Advanced Supercomputing (NAS) Division. Были распараллелены следующие тесты:

  • MG (MultiGrid) — Аппроксимация решения трехмерного дискретного уравнения Пуассона при помощи V-циклового многосеточного метода.
  • CG (Conjugate Gradient) – Приближение к наименьшему собственному значению большой разреженной симметричной положительно определенной матрицы с использованием метода обратной итерации вместе с методом сопряженных градиентов в качестве подпрограммы для решения СЛАУ.
  • FT (Fast Fourier Transform) – Решение трехмерного уравнения в частных производных при помощи Быстрого преобразования Фурье (FFT).
  • EP (Embarrassingly Parallel) – Генерация независимых нормально распределенных случайных величин при помощи Marsaglia polar метода.
  • BT (Block Tridiagonal), SP (Scalar Pentadiagonal) и LU (Lower-Upper) – Решают синтетическую систему нелинейных дифференциальных уравнений в частных производных (3-х мерная система уравнений Навье-Стокса для сжимаемой жидкости или газа), используя три алгоритма: блочная трехдиагональная схема с методом переменных направлений (BT), скалярная пятидиагональная схема (SP) и метод симметричной последовательной верхней релаксации (алгоритм SSOR, задача LU).

Для каждой задачи существует набор входных данных. Данный набор определяется классом теста. Всего существует 7 классов: S и W – задают очень маленькие входные данные, используются в основном для тестирования и отладки во время разработки; A, B, и С – задают маленькие, средние и большие входные данные, которые предназначены для тестирования одного узла; D и E – задают очень большие и огромные входные данные, которые предназначены для тестирования нескольких узлов.

В циклах тестов MG, CG, FT, EP  нет зависимостей по данным. В циклах тестов LU, BT, SP присутствуют регулярные зависимости по данным, так как в основном алгоритме используется метод попеременных направлений (BT, SP) и метод последовательной верхней релаксации (LU), который образует зависимость по трем измерениями массива.

В Таблице 1 представлены времена выполнения реализованных тестов, а ниже приведены графики, демонстрирующие ускорения тестов:

  • Последовательные версии исходных тестов, выполненных на одном ядре процессора Intel Xeon E5 1660 v2.
  • Параллельные версии тестов, написанные на  языке Fortran-DVMH,  выполненные на следующих графических ускорителях: NVIDIA Tesla C2070 с включенным ECC (поколения Fermi), NVIDIA GTX Titan (поколения Kepler), NVIDIA  Tesla k40 с выключенным ECC (поколения Kepler).
  • Параллельные версии тестов, написанные на  языке Fortran-DVMH,  выполненные на 6-ти ядерном процессоре Intel Xeon E5 1660 v2 с включенным Hyper Threading (2 потока на ядро) и отключенным Turbo Boost и на 60-ти ядерном Intel Xeon Phi 5110 с активным Hyper Threading (4 потока на ядро).

Последовательные версии программ были скомпилированы с помощью Intel Fortran Compiler V17.0 c опциями -O3 -mcmodel=medium -shared-intel. Для компиляции Fortran-DVMH программ использовались:

  • Intel Fortran Compiler V17.0 с опциями -O3 -no-scalar-rep -qopenmp;
  • Intel C/C++ Compiler V17.0 с опциями -O3 -no-scalar-rep -qopenmp;
  • NVIDIA Compiler V8.0 с опциями -arch=sm_35 -O3 -DCUDA_NO_SM_20_INTRINSICS.
Таблица 1. Времена выполнения тестов NAS NPB 3.3
Таблица 1. Времена выполнения тестов NAS NPB 3.3
Тесты Fortran Fortran-DVMH
Intel Xeon E5 1660 v2 NVIDIA Tesla C2070
(c ECC)
NVIDIA GTX Titan
(без ECC)
NVIDIA Tesla k40
(без ECC)
Intel Xeon E5 1660 v2 Intel Xeon Phi 5110
BT A 40,7 9,61 2,51 1,65 7 8,57
B 166,9 46,4 8,06 5,04 28,8 25,3
C 713,3 146,4 26,69 16,42 117,69 97,11
SP A 28,6 6,43 2,39 2,62 6,75 13,6
B 116,9 26,8 9,33 6,68 25,2 30,1
C 483,24 106,3,6 29,3 31,26 122,25 116,6
LU A 35,07 5,59 4,04 3,01 4,7 18,62
B 158,5 16,82 10,58 7,23 21,8 57,04
C 852,3 53,5 30,91 20,3 94,37 164,4
EP A 16,7 0,24 0,42 0,12 1,5 0,77
B 67,33 0,62 1,01 0,2 6,26 2,97
C 266,3 2,64 3,77 0,9 25,02 11,67
MG A 1,06 0,23 0,16 0,16 0,38 0,54
B 4,96 1,02 0,69 0,77 1,87 2,7
C 42,3 6,24 3,66 3,56 15,96 20,65
CG A 0,94 1,84 0,59 0,94 0,31 1,41
B 78,8 55,14 19,47 36,87 15,3 20,69
C 221 164,88 60,1 110,03 40,8 64,4
FT A 3,05 0,67 0,25 0,28 0,45 0,63
B 39,5 9,35 3,64 4,14 6,38 8,41
C 199,3 41,79 15,7 18 25,7 33,6
Графики, демонстрирующие ускорения тестов NAS NPB 3.3
GPU-BT-SP-LU-05-2017-ru
Рис. 1. Ускорения тестов BT, SP, LU на классах A, B, C с использованием графических ускорителей разных типов и архитектур
GPU-MG-CG-FT-05-2017-ru
Рис. 2.  Ускорения тестов MG, CG, FT на классах A, B, C с использованием графических ускорителей разных типов и архитектур
CPU-BT-SP-LU-05-2017-ru
Рис. 3. Ускорения тестов BT, SP, LU на классах A, B, C с использованием Intel Xeon E5 1660 v2 и Intel Xeon Phi 5110
CPU-MG-CG-FT-05-2017-ru
Рис. 4. Ускорения тестов MG, CG, FT на классах A, B, C Intel Xeon E5 1660 v2 и Intel Xeon Phi 5110

На Рис. 5 показано ускорение теста EP на классе С по сравнению с последовательной версией данной программы, выполненной на одном ядре Intel Xeon E5 1660 v2. Данный тест выполнялся на разных архитектурах по отдельности, а также в следующих комбинациях: Intel Xeon E5 1660 v2 + GTX Titan, Intel Xeon E5 1660 v2 + Intel Xeon Phi и Intel Xeon E5 1660 v2 + GTX Titan + Intel Xeon Phi. Сиреневым цветом показан случай, когда дополнительно использовалась балансировка нагрузки путем задания соотношения весов всех ядер центрального и графического процессоров и соотношения весов MPI-процессов, отображаемых на центральный процессор и сопроцессор.

EP-FDMH-12-2016-ru
Рис. 5. Ускорение теста EP на классе С

Также доступно сравнение FDVMH-версий тестов из пакета NAS NBP 3.3 со следующими вариантами программ, проведенное в марте 2015 года:

  • с исходными версиями тестов NAS, распараллеленными с помощью OpenMP;
  • с версиями тестов NAS, написанными на языке Си и распараллеленными на OpenCL;
  • с версиями тестов NAS, написанными на языке Си++ и распараллеленными на CUDA (только тесты LU, BT, SP).