УДК 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