Оптимизация приложений для конкретного кластера на примере приложения Gromacs
Ключевые слова: производительность, микроархитектура, I-SCALARE, кластер.
Существует множество методов измерения производительности вычислительных систем, один из которых продемонстрирован в данной статье. Представленный метод основан на анализе поведения микроархитектуры вычислительной системы, а именно в измерении значений микроархитектурных счетчиков при интенсивной нагрузке на систему. Такой подход дает достаточно полную картину об архитектуре, чтобы можно было судить о производительности системы. Для создания нагрузки на систему в лаборатории суперкомльютерных систем Пентковского I-SCALARE в МФТИ, созданной при финансировании из гранта Правительства РФ для государственной поддержки научных исследований, проводимых под руководством ведущих ученых в российских образовательных учреждениях высшего профессионального образования, в 2010 г., использовался набор бенчмарков SPEC CPU2006, что позволило опробовать работу вычислительной системы со всевозможных сторон. Для выявления значений ми-кроархитектурных счетчиков в лаборатории использовался Intel VTune Amplifier XE. Описаны все особенности инсталляции и запуска этих двух программ. Все измерения представленные в статье проводились на кластере GEN-1 установленном в МФТИ. Обработав собранную статистику значений счетчиков, было выяснено, под какой тип задач архитектура GEN-1 подходит наилучшим образом. Описанный метод является достаточно простым с точки зрения использования и очень информативным с точки зрения полученной информации о вычислительной системе.
Пентковский В.М.,
дт.н., профессор, руководитель лаборатории I-SCAIARE, МФТИ, [email protected]
Щелкунов Н.Н.,
кт.н, зам. зав. кафедры радиоэлектроники и прикладной информатики МФТИ, [email protected]
Гаврилов ДА,
к.т.н, н.с. на кафедре радиоэлектроники и прикладной информатики МФТИ, [email protected]
Павлов А.В.,
студент ФРТКМФТИ, сотрудник лаборатории I-SCAIARE, [email protected]
Введение
Во всех отраслях науки и производства используются вычислительные системы (далее ВС). В большинстве случаев указанные ВС являются проблемно-ориентированными, т.е. на них используется одно основное приложение.
С течением времени приложения развиваются и улучшаются для облегчения работы или выполнения более широкого спектра задач. Развитие приложений идет более быстрыми темпами по сравнению с развитием ВС, особенно с учетом того факта, что менять ВС при каждом обновлении программы не является целесообразным. Вследствие описанного выше факта немалую актуальность приобретает умение оптимизировать приложения псд определенный вид ВС.
Такая оптимизация возможна несколькими способами:
• Оптимизация программного кода. Данный способ является удачным в том случае, если изначально известны особенности програм-
мы, ВС и особенности задач, которые будут исследоваться на данной ВС с помощью данного приложения. В случае, если исходные коды и параметры ВС заранее неизвестны, рекомендуется использовать второй способ.
• Оптимизация во время установки, т.е. использование различных компиляторов и библиотек. Умение пользоваться данным методом позволяет оптимизировать приложение, не зная заранее всех особенностей ВС и самого приложения. Зная набор опций компилятора, и используя несколько библиотек можно оптимизировать любое приложение экспериментальным путем.
Рассматривается второй способ оптимизации на примере приложения Gromacs. Предполагается, что на ВС установлены две библиотеки MPI (IMPI и MPICH2) и два компилятора ( icc и gcc). В процессе оптимизации будет проведена серия опытов с различными комбинациями mpi библиотек и компиляторов, причем в ходе работы, программный код приложения затронут, не будет.
Начальная установка и знакомство с приложением
Рассматриваемое приложение GROMACS является специализированным пакетом для работы в области молекулярной динамики с целью моделирования физико-химических процессов. Считается, одним из самых быстрых приложений в данной области. Указанное приложение является свободным программным обеспечением с открытым исходным кодом, выпущенным под лицензией GPL.
При работе Gromacs использует библиотеки FFTW(MKL) и MPI библиотеки. Библиотеки отвечают за распараллеливание кода, FFTW — за выполнение математических расчетов. При установке могут понадобиться несколько пере-
менных, кпримеру, MPICC для указания MPI библиотеки. [1,2] При использовании каких-либо библиотек могут возникнуть трудности. Библиотеки могут быть установлены не в стандартныхпутях, поэтому нужно указывать не только опцию для использования, но и переменные, отвечающие за пути к библиотекам. Вполне вероятно, что придется использовать и дополнительные опции.
Библиотека FFTW является набором модулей на языках Си и Фортран для вычисления быстрого преобразования Фурье (БПФ). Библиотека включает модули параллельной обработки БПФ, которые позволяют использовать ее на многопроцессорных машинах с общей и распределенной памятью. FFTW состоит из четырех различных вариантов вычисления БПФ:
• Одномерное преобразование Фурье для комплексных чисел
• Многомерное преобразование Фурье для комплексных чисел
• Одномерное преобразование Фурье для действительных чисел
• Многомерное преобразование Фурье для действительных чисел
Библиотека Intel Math Kernel Library широко используется для решения вычислительно сложных задач, где от платформ Intel требуется максимальная производительность. К функциональным возможностям этой библиотеки можно отнести модули линейной алгебры (BLAS, Sparse BLAS, LAPACK и пакет Sparse Solvers), функции быстрых преобразований Фурье (FFT), векторные математические функции (VML), генераторы случайных чисел.
Оптимизация приложения
Рассматриваемый способ предполагает сравнение скорости работы различных видов сборок. Для этого были выбраны 2 вида компи-T-Comm #1-2013
ляторов, 2 вида математических библиотек и 2 вида MPI библиотек. Так как задачей является нахождение оптимальной версии сборки, то во время эксперимента была проведена серия тестов. Рассмотрим их подробнее.
Для получения полной картины, Gromacs собирался компиляторами icc и gcc, для компилятора icc были рассмотрены 7 опций(msse2, O2, O3, parallel, parallel-par-threshold=100, vec-threshold, xhost), использовались MPI библиотеки: Intel MPI и MPICH2 и рассматривались математическим библиотеки mkl и fftw3. Так же была возможность проверить mdrun неизвестной сборки. Были рассмотрены именно эти вариации по нескольким причинам:
• Сравнение наиболее используемого MPICH2 и интеловского MPI.
• Аналогичная причина для библиотек fftw3 и mkl.
• Оценка преимуществ icc с различными опциями по сравнению с gcc.
• Так же рассматривалась польза от использования различных опций icc.
Компилятор icc имеет большое число опций и дополнительных настроек[3]. В процессе исследования были отобраны самые необходимые, позволяющие заметно облегчить работу
Приведем примеры: опция -parallel находит простые циклы, которые можно выполнить параллельно, приставка -par-threshold=100 позволяет контролировать распараллеливание. Рассматривать данную "приставку" следует, так как распараллеливание не всегда может быть полезным, поэтому выбрано значение 100. Нет смысла распараллеливать код, работающий с большей эффективностью на одном потоке, значение опции — par-threshold позволяет контролировать распараллеливание, значение 0 - распараллеливать всегда, 100 - распараллеливать тогда и только тогда, когда будет увеличение в производительности.
Проблемным участком может оказаться доступ в память, поэтому рассматривалась опция -O3, которая позволяет увеличить скорость доступа в память, тем самым уменьшить время работы приложения в целом. Опция рекомендована для приложений с циклами, оперирующими вычислениями с плавающей точкой.
Опция -xhost создает наборы инструкций подходящие для приложения на конкретном кластере. В случае нашей задачи с ее помощью можно создать набор инструкций, который позволит наиболее эффективным способом использовать определенные инструкции, тем самым ускоряя работу приложения.
Возможно использование нескольких опций, но в этом случае следует отслеживать совместимость. Так же опции могут быть взаимоисключающими, к примеру, -О3 и -О2, обе оп-
ции работают с памятью. Наравне с опциями, возможна несовместимость библиотек, за этим так же нужно следить. Решению описанных выше проблем возможно путем описания опций и передачи новых переменных при установке. Некоторые приложения имеют визуализатор, для него так же необходима специальная библиотека. В случае с Оготаез, визуализатор можно отключить с помощью опций, переданных при установке.
Для получения экспериментальных данных были созданы по 6 файлов(mdгun_d, т^гип_тр, mdгun_intel_mpi, mdгun_mkl, mdгun_mkl_mpi, mdгun_mkl_intel_mpi) в 9 папках(Ьтдее, Ьиее, binicc-msse2, Ытее-02, Ытее-ОЗ, Ьисе-рагаИе!, Ытсе-рагаИе^раМЬгезЬоЦ Ытсс-уее4ЬгезЬоЫ, Ытсе-хЪоз^. Папки имеют такое названия для простоты ориентации, т.е. Ып — бинарные файлы запуска приложения, суффикс icc/gcc — используемый компилятор и через "-" указана опция компилятора.
Самым наглядным способом сравнения являются диаграммы. Введем некоторые обозначения, используемые в диаграммах. Mdгun -стандартное название файлов при установки, суффикс mpi говорит о том, что установка шла при использовании МР1 библиотек, Не! - при использовании интеловских МР1 библиотек, mkl - МК1_ библиотек. Если установка происходит без МР1 библиотек, то Gromacs запускает максимально возможное количество потоков на узле, при использовании МР1 запускается определенное количество процессов по одному потоку. Так как Gromacs может потреблять огромное количество вычислительных ресурсов, то наиболее интересным становится сравнение МР1 библиотек.
Диаграммы
Наилучшим вариантом сравнения различных сборок являются диаграммы. С их помощью можно легко сравнить полученные ре-зулытаты! и сделаты окончателыный вывод. Для упрощения оптимизации можно вы1водиты резулытаты! в файл, и далее простыми командами создаты файлы! для дпирЫ. Каждая иллюстрация представлена в двух вицах: в оригиналыных значениях и нормированных на 1 [4].
На всех иллюстрациях по оси ОУ отложено время вышолнения, по оси ОХ компилятор с опцией.
Файлы! mdrun_d и пг^гип_тк1 запу-скалисы на одном узле, осталыныю были запущены на 8 узлах на 192
потока. Рис 1 представляет собой зависимость времени от используемого компилятора с опцией, для двух видов сборок приложения без МР1 библиотек(с библиотекой А^2 и mkl), рис 1.1 нормированный вид рис. 1. Gromacs был запущен на одном узле. По данной диаграмме можно сравнить работу математических библиотек. Красным цветом обозначена библиотека АмЗ, зеленым — mkl [5].
На рис. 2 представлена зависимость времени выполнения от способа сборки приложения для файлов собранных с помощью МР1СН2, рис 2.1 — нормированная версия рис 2. Аналогично рис 1: красный — АмЗ, зеленый — mkl. На рис. 3 представлена зависимость времени выполнения от способа сборки приложения для файлов собранных с помощью 1МР1, рис. 3.1 — нормированная версия рис. 2. По рис. 2-3 можно сравнить работу МР1 библиотек. Используя все иллюстрации в оригинальных данных для анализа, можно выбрать наилучшие компиляторы и библиотеки.
Вывод
Анализируя приведенные данные выше, делаем вывод, что наилучшая сборка это сборка Gromacs компилятором icc без опций с использованием интеловских МР1 библиотек.
В ходе работы был определена наилучшая сборка приложения для конкретного кластера, следовательно, основная цель была достигнута.
Время,с 940
Зависимость времени работы от исполняемого файла
'a, "fe, "fe, “fev
ч ч ч ч. ч ч ч ч» % % \ *
ч ч
А -ъ-
Исполняемый файл Рис 1. Зависимость времени от компилятора
°/
о
Время
Зависимость времени работы от исполняемого файла _____________________Нормировка на 1_______________
Исполняемый <\ Рйс 1.1. Нормированная версия рис. 1
T-Comm #1-2013
37
Зависимость времени работы от исполняемого файла
Время,с 300
250
200
150
100
50
0
Зависимость времени работы от исполняемого файла
mdrun_intel_mpi м mdrun mkl Intel mpl i=
'Cc /cc /(C % /(b '°С %
O, O, %. \ \ %. %,
V і? j Ъ °С 'Q
r &/
Or.
CC
Рис. 2. Зависимость времени от компилятора
Исполняемый файл
ч \
ч\
%
Ч
°С, <Ь
V
Рис. З. Зависимость времени от компилятора
Исполняемый файл
% %
■ о X X
X X \ %
лл О/
\ О
X
о
Время
Время_мин
Зависимость времени работы от исполняемого файла Нормировка на 1
Время
Время_мин
1.06 '
1.04
1.02
1
0.98
0.96
Зависимость времени работы от исполняемого файла Нормировка на 1
mdrun_intel_mpi mdrun_mkl J ntelmpi
C. XC 'Ci
9'/ *'/ % Ъ
sss
Рис. 2.1. Нормированная версия рис. 2
Исполняемый файл
Побочными целями было сравнение МР1 и математических библиотек, так же были затронуты опции icc и сравнение icc и дее. И по ходу эксперимента было установлено, что 1МР1 работает намного быстрее МР1СН2, для конкретной ВС, а победителя среди математических библиотек выявить не удалось.
Рис. З.1. нормированная версия рис. З
.nMTBpoTypo
1. http://www.gromacs.ong.
2. GROMACS Groningen Machine for Chemical Simulations USER MANUAL Version 4.5.4.
3. Quick-Reference Guide to Optimization with Intel® Compilers version 12 For IA-32 processors and Intel® 64 processors.
Исполняхмый файл
* 4 \\ \ Or
4. Документация по свободной программе Gnuplot. URL: http://www.gnuplot.info/docs_4.2/ gnuplot.html (дата обращения 5.04.12).
5. Д. Паттерсон, Дж Хеннесси. Архитектура компьютера и проектирование компьютерных систем. Классика Computer Science. 4-е изд. — СПБ.: Питер, 2012. С. 514, 597.
SOFTWARE OPTIMIZATION FOR CLUSTER BY THE EXAMPLE OF GROMACS SOFIWARE
Pentkovsky V.M., PHD, d.sc, prof'., head of I-SCAIARE laboratory, MFTI, [email protected] Schelkunov N.N., PHD., deputy manager, radio electronics and applied informatics department, MIPT, [email protected] Gavrilov DA, PHD., Head of group at radio electronics and applied informatics department, MIPT, [email protected] Pavlov AV, studentofFRTKMIPT, employee of I-SCALARE laboratory, [email protected]
Abstract
There is a variety of methods for productivity measuring of computational systems. This article describes one of such methods of an assessment of productivity of computing systems. The presented method is based on the analysis of behavior of micro-architecture of the computing system, namely in measurement of values of micro-architectural counters at intensive load of system. Such approach gives rather full picture about architecture that it was possible to judge productivity of system. For creation a load of system in laboratory of supercomputer systems of Pentkovsky I-SCALARE in MIPT used the set of benchmarks SPEC CPU2006 that allowed to test operation of the computing system from all sides. For detection of values of micro-architectural counters in laboratory Intel VTune Amplifier XE was used. In article all features of installation and start of these two programs are also described. All measurements presented in article were carried out on a cluster established in MIPT GEN-1. Having processed collected statistics of values of counters, it was found out under what type of tasks architecture of GEN-1 fits best. The described method is rather simple from the point of view of use, and very informative from the point of view of received information on the computing system.
Keywords: productivity, microarchitecture, I-SCALARE, cluster, Gromacs.
References
1. http://www.gromacs.org.
2. GROMACS Groningen Machine for Chemical Simulations USER MANUAL Version 4.5.4.
3. Quick-Reference Guide to Optimization with Intel® Compilers version 12 For IA-32 processors and Intel® 64 processors.
4. Gnuplot. URL: http://www.gnuplot.info/docs_4.2/gnuplot.html.
5. D. Patterson, J. Hennessy. Computer Architecture and design of computer systems. Classic Computer Science. SPb.: Piter, 2012. Pp. 514, 597.
38 T-Comm #1-201З