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

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

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 C2050 с включенным ECC (поколения Fermi), NVIDIA GTX Titan (поколения Kepler), NVIDIA  Tesla k20 с включенным 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 V15.0 c опциями -O3 -mcmodel=medium -shared-intel. Для компиляции Fortran-DVMH программ использовались:

  • Intel Fortran Compiler V15.0 с опциями -O3 -no-scalar-rep -qopenmp;
  • Intel C/C++ Compiler V15.0 с опциями -O3 -no-scalar-rep -qopenmp;
  • NVIDIA Compiler V6.5 с опциями -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 NVIDIA Tesla C2050
(c ECC)
NVIDIA GTX Titan
(без ECC)
NVIDIA Tesla k20
(c ECC)
Intel Xeon E5 Intel Xeon Phi 5110
BT A 40,7 9,61 2,71 2,78 6,97 7,68
B 166,9 46 8,67 8,31 28,8 20,9
C 713,3 142,7 28,9 28,15 118,1 74
SP A 28,6 7,4 2,25 3,25 6,75 11,6
B 116,9 26,12 9,65 13,34 29,18 27
C 483,24 92,6 29,74 45,9 122,2 120
LU A 35,07 7,15 4,76 4,74 4,7 16,5
B 148,5 20,4 11,84 10,09 33,7 57,7
C 852,3 61,5 33,73 29,91 99 157,3
EP A 16,7 0,28 0,41 0,17 1,5 0,78
B 67,33 0,71 1,02 0,27 5,99 2,99
C 266,3 2,6 3,9 1,13 23,96 11,6
MG A 1,06 0,46 0,19 0,38 0,38 0,61
B 4,96 2,17 0,87 1,86 2,14 2,8
C 42,3 8,33 3,89 5,78 16,2 15,5
CG A 0,94 2,14 0,56 1,42 0,31 1,41
B 78,8 71,7 19,2 35,22 15,3 21,18
C 221 221,7 59,16 102,9 40,8 64,6
FT A 3,05 0,75 0,31 0,47 0,45 0,64
B 39,5 10,7 3,9 6,63 6,38 8,46
C 199,3 50,8 18,4 31,42 25,7 46,6
Графики, демонстрирующие ускорения тестов NAS NPB 3.3
GPU-BT-LU-SP-03-2015-ru
Рис. 1. Ускорения тестов BT, SP, LU на классах A, B, C с использованием графических ускорителей разных типов и архитектур
GPU-MG-CG-FT-03-2015-ru
Рис. 2.  Ускорения тестов MG, CG, FT на классах A, B, C с использованием графических ускорителей разных типов и архитектур
PHI-BT-LU-SP-03-2015-ru
Рис. 3. Ускорения тестов BT, SP, LU на классах A, B, C с использованием Intel Xeon E5 1660 v2 и Intel Xeon Phi 5110
PHI-MG-CG-FT-03-2015-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-процессов и количество OpenMP-нитей внутри каждого из процессов. Красным и сиреневым цветом показаны случаи, когда дополнительно использовалась балансировка нагрузки путем задания соотношения весов всех ядер центрального и графического процессоров и соотношения весов MPI-процессов, отображаемых на центральный процессор и сопроцессор.

EP-FDMH-03-2015
Рис. 5. Ускорение теста EP на классе С

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

Для компиляции программ использовались NVIDIA CUDA Toolkit V6.5, PGI V15.0, Intel Fortran V15.0. По сравнению с OpenMP версиями стандартных тестов, выполненных на ЦПУ, DVMH версии не уступают по производительности, а на некоторых тестах (SP, LU) выигрывают в 3,5 раза. Эти же тесты, выполненные на Intel Xeon Phi, показывают примерно такое же ускорение, как и DVMH-версии, кроме тестов MG и CG (замедление примерно в 2 раза). По сравнению с OpenCL версиями, выполненными на GPU GTX Titan, DVMH версии не уступают по производительности на тестах LU и EP, в два раза замедляются на тестах MG и CG, и в 6-8 раз быстрее на тестах BT, SP и FT. Стоит также отметить, что для тестов BT и FT класса С OpenCL-версиям не хватило 6 ГБ памяти GPU, поэтому не удалось сравнить производительность на данном классе. Замедление на тестах MG и CG связано с тем, что DVMH компилятор хорошо распараллеливает программы, использующие регулярные сетки. Но в тесте MG используются разного размера сетки, а в CG – разреженные матрицы. Запуски OpenCL программ на CPU и Xeon Phi показали очень плохие результаты, поэтому они не отражены в данном разделе. По сравнению с CUDA версиями, выполненными на GPU GTX Titan, DVMH версии не уступают по производительности на тестах LU и SP, и в 4-7 раз быстрее на тесте BT.

CPU-DVMH-OpenMP-05-2015
Рис. 6. Ускорение Fortran-DVMH тестов по отношению к OpenMP версиям, выполненным на Intel Xeon E5
PHI-DVMH-OpenMP-05-2015
Рис. 7. Ускорение Fortran-DVMH тестов по отношению к OpenMP версиям, выполненным на Intel Xeon Phi
GPU-DVMH-OpenCL-05-2015
Рис. 8. Ускорение Fortran-DVMH тестов по отношению к OpenCL версиям, выполненным на GPU GTX Titan
GPU-DVMH-CUDA-05-2015
Рис. 9. Ускорение Fortran-DVMH тестов по отношению к CUDA версиям, выполненным на GPU GTX Titan