Эффективность выполнения тестов 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
Тесты | 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
На Рис. 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-процессов, отображаемых на центральный процессор и сопроцессор.
Также доступно сравнение FDVMH-версий тестов из пакета NAS NBP 3.3 со следующими вариантами программ, проведенное в марте 2015 года:
- с исходными версиями тестов NAS, распараллеленными с помощью OpenMP;
- с версиями тестов NAS, написанными на языке Си и распараллеленными на OpenCL;
- с версиями тестов NAS, написанными на языке Си++ и распараллеленными на CUDA (только тесты LU, BT, SP).