Исследование производительности четырехпроцессорных

advertisement
УДК 681.3.06+519.68
С. И. Мальковский, В. В. Пересветов, 2010
ИССЛЕДОВАНИЕ ПРОИЗВОДИТЕЛЬНОСТИ
ЧЕТЫРЕХПРОЦЕССОРНЫХ УЗЛОВ В СОСТАВЕ
ВЫЧИСЛИТЕЛЬНОГО КЛАСТЕРА
Мальковский С.И. – м.н.с. (ВЦ ДВО РАН);
Пересветов В.В. – с.н.с. (ВЦ ДВО РАН), к.ф.-м.н.
В докладе обсуждаются результаты экспериментального исследования производительности четырёхпроцессорных узлов Sun Blade
X6440 Server в составе гетерогенного вычислительного кластера ВЦ
ДВО РАН. На каждом тестируемом узле установлены четыре шестиядерных процессора AMD Opteron 8431. Проведен сравнительный анализ эффективности компиляторов Intel и GNU, технологий
MPI и OpenMP. Использовались тесты HPL и NPB.
При эксплуатации вычислительных кластеров необходимо знать
их производительность при решении основных типов задач, эффективность установленного системного программного обеспечения, особенности работы различных параллельных технологий. Такая информация
особенно актуальна в случае использования гетерогенных вычислительных кластеров, так как для них возможен не только выбор системного программного обеспечения, но и назначение типа вычислительных узлов для конкретных запускаемых задач. Гетерогенный вычислительный кластер ВЦ ДВО РАН в настоящее время объединяет с помощью коммуникационной сети Gigabit Ethernet три типа узлов: HP ProLiant DL360 G5, Sun Blade X6250 Server и Sun Blade X6440 Server.
В предыдущих работах [1-3] были приведены результаты исследования производительности кластеров ВЦ ДВО РАН в различных классах задач. В работе [2] описаны результаты испытаний для вычислительного кластера с пиковой производительностью 204 GFlops, состоящего из 8 узлов HP ProLiant DL360 G5, в которых установлено по 2
двухъядерных процессора Intel Xeon 5060 (3,2 GHz) и 4 GB памяти. В
работе [3] обсуждались результаты таких испытаний для пяти двухпроцессорных узлов Sun Blade X6250 Server с пиковой производитель-
1
ностью 480 GFlops, построенных на четырёхъядерных процессорах
Intel Xeon E5450 (3 GHz) с памятью 16 GB на каждом.
Все эти испытания показали, что некоторые классы задач не могут
эффективно исполняться на таких вычислительных системах. К ним
относятся задачи, решаемые при помощи алгоритмов, эффективность
которых сильно зависит от скорости передачи данных между отдельными вычислительными процессами и от латентности среды передачи
данных. Такие задачи хорошо масштабируются в пределах одного узла
вычислительного кластера. При их запуске на двух и более узлах производительность резко падает.
Новые многопроцессорные узлы в составе гетерогенного вычислительного кластера ВЦ ДВО РАН Sun Blade X6440 Server оснащены четырьмя шестиядерными процессорами AMD Opteron Istanbul 8431 (2,4
GHz) и 96 GB оперативной памяти. Каждый из них может использоваться как отдельная симметричная мультипроцессорная (24 вычислительных ядра) система с общей памятью (SMP). Пиковая производительность одного узла составляет 230,4 GFlops.
Цель настоящего исследования – попытка определить производительность новых вычислительных узлов в различных классах задач.
При тестировании использовалось программное обеспечение Intel
Cluster Toolkit, OpenMPI, компиляторы Intel и GNU. В докладе приведены результаты исследования производительности средствами HPL и
NPB.
Тест Linpack. В тестировании использовалась версия для массивно-параллельных систем – HPL 2.0 (Portable Implementation of the HighPerformance Linpack Benchmark for Distributed-Memory Computers). На
основе результатов выполнения теста HPL формируется список 500
самых мощных вычислительных систем в мире и 50 – в России.
Программа HPL решает СЛАУ Ax=b методом LU-разложения с
выбором ведущего элемента, где A – плотно заполненная вещественная
матрица двойной точности размерности N. Данный тест позволяет
оценить масштабируемость и реальную производительность вычислительной системы. Для получения максимальных результатов в HPL
необходима настройка параметров этого теста. Одним из самых важных является параметр NB, который отвечает за размер передаваемых
между отдельными процессами блоков данных. На рис. 1 показана зависимость производительности R от этого параметра. Из этого рисунка
видно, что наибольшая производительность достигается при значении
NB, равном 160 (1280 B). Для оценки масштабируемости тест Linpack
последовательно запускался на разном числе вычислительных ядер. На
рис. 2 показано, что имеется практически линейная зависимость производительности от числа процессов (ядер) n.
2
Рис.1. Зависимость производительности от параметра NB.
Рис. 2. Зависимость производительности от числа ядер n.
Максимальная производительность одного узла в тесте Linpack,
полученная при размерности матрицы N=110000, составила 182
3
GFlops, или 79 % от пиковой. Другие важные параметры теста HPL:
NB=160, P×Q = 4×6, алгоритм передачи (BCAST) – 1ring.
Тест NPB. Тест NAS Parallel Benchmark [5,6] создан для оценки
производительности параллельных вычислений. В настоящей работе
использовалась версия NPB 3.3. Тест состоит из ряда простых задач:
ядер и приложений. Ядра и приложения могут производить вычисления в классах сложности: S, W, A, B, C, D. С увеличением класса
сложности возрастает размерность сеток, массивов данных и количество итераций в основных циклах программ. Здесь приведены показатели производительности, полученные в результате 30 испытаний.
Тест «LU» основан на алгоритмах симметричной последовательной верхней релаксации (SSOR) решения блочных (5×5) систем. Размерность задачи для классов A, B, C, D: 643, 1023, 1623, 4083 соответственно. Взаимодействие параллельных процессов осуществляется
большим числом синхронных передач сообщений MPI_Send небольшой (в среднем) длины, поэтому коммуникационная сеть загружается
не сильно.
В табл. 1 показаны результаты оценки производительности, включая значения относительного разброса в % (R – среднее значение, k –
размер выборки):
k
100σ
σn =
, σ=
R
∑ (R
i =1
− R) 2
i
k −1
.
Табл. 1.
Результаты для теста LU.
Ядра
4
8
16
4
Технология
Компилятор
Класс A
Класс B
Класс C
R/n
σn
R/n
σn
R/n
σn
MPI
ifort -O3
1353
0,22
1315
0,29
1180
0,33
MPI
gfort -O3
1510
0,22
1484
0,51
1290
0,69
OpenMP
gfort -O3
1219
0,30
1250
0,18
971
0,20
MPI
ifort -O3
1210
0,35
1139
0,44
1059
0,79
MPI
gfort -O3
1306
0,23
1267
0,25
1151
0,72
OpenMP
gfort -O3
1202
0,38
1107
0,23
951
0,51
MPI
ifort -O3
1027
0,44
919
0,30
904
3,56
MPI
gfort -O3
1122
0,22
992
0,61
965
2,32
OpenMP
gfort -O3
1083
0,29
895
0,3
782
0,94
Можно видеть, что в данном тесте применение компилятора GNU
показывает в среднем более высокую производительность по сравнению с компилятором Intel, а вариант программы использующей
OpenMP по производительности отстаёт от MPI. При этом с увеличением класса сложности и количества одновременно задействованных
процессорных ядер различие между результатами для проверяемых
компиляторов становится несущественным.
Для этого теста также были проведены расчеты в классе D на 16
процессах MPI (ifort -O3). В этом случае наблюдается резкое падение
производительности в расчете на один процесс R/n: 452.
В тесте «IS» осуществляется параллельная сортировка большого
массива целых чисел, см. табл. 2. Размерность сортируемого массива
данных для классов A, B, C: 223, 225, 227 соответственно. Передача сообщений между процессами осуществляется с помощью операций
MPI_Alltoall и MPI_Allreduce. При запуске этого теста на небольшом
числе процессорных ядер результаты для всех компиляторов и технологий параллельного программирования показывают примерно одинаковый уровень производительности. С увеличением числа задействованных ядер наблюдается снижение показателя производительности
R/n, однако для реализаций с OpenMP оно оказывается не таким существенным, как для MPI: 1,4 раза против 2 раз для класса сложности C.
Это падение связано с очень большой загрузкой коммуникационной
сети коллективными передачами сообщений большой длины.
Табл. 2.
Результаты для тестов IS.
Ядра
4
8
16
Технология
Компилятор
MPI
Класс A
Класс B
Класс C
R/n
σn
R/n
σn
R/n
σn
icc -O3
58,5
0,77
55,9
1,0
53,6
0,80
MPI
gcc -O3
54,1
0,84
51,4
1,2
48,6
0,83
OpenMP
gcc -O3
55,0
0,17
54,1
0,31
52,8
0,18
MPI
icc -O3
50,6
1,8
48,0
1,3
45,0
1,2
MPI
gcc -O3
46,8
1,7
44,4
1,3
41,9
1,0
OpenMP
gcc -O3
49,8
0,12
49,2
0,29
48,7
0,39
MPI
icc -O3
32,6
1,5
31,2
1,0
27,1
0,77
MPI
gcc -O3
31,7
2,0
30,2
0,50
26,1
0,33
OpenMP
gcc -O3
39,5
0,30
38,8
0,75
38,5
0,72
5
В тесте «FT» решается 3-D задача с использованием преобразования Фурье. Размерность сетки для классов A, B, C: 2562×128, 512×2562,
5123 соответственно. Взаимодействие между процессами осуществляется с помощью коллективных операций: MPI_Reduce, MPI_Barrier,
MPI_Bcast, MPI_Alltoall. Данные, приведенные в табл. 3, показывают,
что скорость работы программы, использующей OpenMP, значительно
выше случая MPI. Вероятно, для этого теста можно создать более эффективный вариант MPI-программы, построенный с использованием
других способов передачи сообщений. Результаты для использованных
компиляторов показывают схожий уровень производительности.
В тесте «CG» решается СЛАУ с разряженной произвольной матрицей методом сопряженных градиентов. Сообщения организованы с
помощью неблокирующих двухточечных взаимодействий. Размерность задачи: 14000 для класса A, 75000 - класса B, 150000 - класса C.
Из табл. 3 видно, что использование компилятора Intel для этой задачи
дает чуть более высокий результат.
Табл. 3.
Результаты R/n тестов FT, CG.
Тест Класс Ядра
A
FT
C
A
CG
C
D
6
MPI
ifort -O3 gfort -O3
OpenMP
gfort -O3
4
775
753
1036
8
657
639
954
16
490
476
799
4
675
748
-
8
668
689
-
16
509
515
-
4
564
504
524
8
541
480
497
16
444
392
444
4
316
295
252
8
337
314
280
16
248
233
252
16
68,5
-
-
Тест «EP» служит для оценки производительности в расчётах с
плавающей точкой при отсутствии заметных межпроцессорных взаимодействий. Он включает в себя генерацию псевдослучайных нормально распределённых чисел. В табл. 4 показаны результаты расчетов. Размерность задачи для классов A, B, C, D: 228, 230, 232, 236 соответственно. Скорость работы программы с использованием компилятора Intel примерно в 1,7 раза выше.
В тесте «MG» находится приближенное решение трехмерного
уравнения Пуассона. Используется многосеточный алгоритм. Размерность сетки для классов A, B, C, D: 2563, 2563 (с другими параметрами),
5123, 10243 соответственно. Из табл. 4 можно видеть, что для OpenMP
и MPI, компиляторов GNU и Intel результаты близки.
В тесте «BT» находится решение трех несвязанных систем уравнений неявным методом попеременных направлений. Размерность задач для классов A, B, C: 643, 1023, 1623 соответственно. Взаимодействие параллельных процессов в этих приложениях реализуется на
асинхронных передачах сообщений MPI_Isend. Результаты расчетов,
см. табл. 4, показывают, что производительность MPI-программы
практически не уменьшается с увеличением числа процессов.
Табл. 4.
Результаты R/n тестов EP, MG, BT.
Тест Класс Ядра
EP
A
D
MG
A
D
A
BT
C
D
MPI
ifort -O3 gfort -O3
OpenMP
gfort -O3
4
30,9
17,9
17,5
16
30,3
17,7
16,8
16
31,1
-
16,9
4
1151
1056
1269
8
943
903
956
16
512
555
509
16
474
-
-
4
1513
1499
1528
16
1059
1078
1373
4
1422
1450
1465
16
1020
1023
1093
16
1015
-
905
7
Основные выводы:
1. Экспериментальные исследования производительности узла Sun
Blade X6440 Server, оснащенного четырьмя шестиядерными процессорами AMD Opteron Istanbul 8431, показали, что на нем можно эффективно решать без взаимодействия с остальными узлами задачи широкого спектра в пределах до 24 процессов MPI. Хорошую масштабируемость на нем показывают даже те задачи, эффективность решения которых напрямую зависит от скорости обмена данными между вычислительными процессами.
2. Применение технологии OpenMP в большинстве случаев приводит к получению производительности на уровне MPI. Более высокую
эффективность технология OpenMP показывает лишь тогда, когда
сильно загружается среда передачи данных.
3. Компиляторы Intel icc и ifort превосходят компиляторы GNU
лишь в случаях некоторых вычислительно-затратных программ с небольшим объемом межпроцессорных взаимодействий. В остальных
случаях различие в производительности программ с использованием
протестированных компиляторов несущественно.
Библиографические ссылки
1. Пересветов В.В., Сапронов А.Ю., Тарасов А.Г. Вычислительный
кластер бездисковых рабочих станций: Препринт № 83. Хабаровск:
Вычислительный центр ДВО РАН, 2005.
2. Щерба С.И., Пересветов В.В. Сравнительный анализ эффективности программного обеспечения для вычислительных кластеров /
Межрегиональная научно-практическая конференция «Информационные и коммуникационные технологии в образовании и научной деятельности» (г. Хабаровск, 21-23 мая 2008). Материалы конференции. Хабаровск: Изд-во Тихоокеанского гос. ун-та, 2008. с.363-369.
3. Мальковский С.И., Пересветов В.В. Оценка производительности
вычислительного кластера на четырехъядерных процессорах / Информационные и коммуникационные технологии в образовании и научной
деятельности: материалы межрегиональной научно-практическая конференция, Хабаровск, 21-23 сентября 2009 г. -Хабаровск: Изд-во Тихоокеанского гос. ун-та, 2009. с. 261-268.
4. A Portable Implementation of the High-Performance Linpack.
http://www.netlib.org/benchmark/hpl/
5. D. Bailey, E. Barszcz, J. Barton and other. The NAS Parallel
Benchmarks. RNR Technical Report RNR 94-007, March, 1994.
6. Rob van der Wijngaart. The NAS Parallel Benchmarks 2.4. Report
NAS-02-007, October, 2002.
8
Download