О.И. ОВЧАРЕНКО
Кандидат технических наук Доцент кафедры экономики и финансов, ЧОУ ВО ТИУиЭ, г. Таганрог
ОЦЕНКА ЭФФЕКТИВНОСТИ РЕАЛИЗАЦИИ ПАРАЛЛЕЛЬНЫХ АЛГОРИТМОВ НА НРС-КЛАСТЕРЕ
Использование потенциала производительности многопроцессорных вычислительных систем (МВС) в настоящее время является важнейшей составляющей инновационного развития страны. Но чтобы в полной мере воспользоваться этим вычислительным потенциалом, необходима разработка соответствующего программного обеспечения. К сожалению, многие эффективные последовательные алгоритмы не обеспечивают необходимых показателей при переносе на многопроцессорные структуры. В связи с этим возникает проблема разработки параллельных алгоритмов,
имеющих высокие качественные показатели при реализации на многоядерных вычислительных структурах.
В данной работе рассмотрена реализация методов решения систем линейных алгебраических уравнений (СЛАУ) с трехдиагональной матрицей на HPC-кластере, представляющем МВС с распределенной памятью. Для параллельных алгоритмов получены оценки ускорения и эффективности. Даны рекомендации по использованию построенных параллельных алгоритмов в зависимости от параметров задачи и МВС.
Параллельный алгоритм, многопроцессорная вычислительная система, HPC-кластер, система линейных алгебраических уравнений.
Тематический рубрикатор e-Library: 27.41.00.
O. OVCHARENKO
ESTIMATION OF THE EFFICIENCY OF IMPLEMENTATION OF PARALLEL ALGORITHMS ON THE НРС-CLUSTER
The use of the performance potential of multiprocessor computing systems (MCS) is currently the most important component of the innovative development of the country. But to take full advantage of this computational potential, the development of appropriate software is necessary. Unfortunately, many efficient sequential algorithms do not provide the necessary performance when transferring to multiprocessor structures. In this regard, there is the problem of developing parallel algorithms that have high quality
Parallel algorithm, multiprocessor computing system, i
Обзор методов решения систем алгебраических уравнений с трехдиагональной матрицей. Системы с трехдиагональной матрицей возникают при трехточечной аппроксимации краевых задач для обыкновенных дифференциальных уравнений второго порядка с постоянными и переменными коэффициентами, а также при реализации разностных схем для уравнений в частных производных. Для решения таких систем используются экономичные прямые методы: метод прогонки, циклической редукции и различные их модификации.
Потребность в решении СЛАУ с трехдиагональ-ной матрицей также возникает на отдельных этапах при реализации быстрых прямых методов решения сеточных эллиптических уравнений [1, с. 121—198; 11-13]. В данной работе выбор остановлен на двух наиболее часто используемых на практике - методе циклической редукции и прогонке.
В качестве исходных данных при оценке эффективности построенных параллельных алгоритмов ис-
indicators when implemented on multi-core computing structures.
In this paper, we consider the implementation of methods for solving systems of linear algebraic equations (SLAE) with a three-diagonal matrix on an HPC-cluster representing a MCS with distributed memory. For parallel algorithms, estimates of acceleration and efficiency are obtained. Recommendations are given on the use of the constructed parallel algorithms depending on the parameters of the problem and the MCS.
7-cluster, system of linear algebraic equations.
пользовались параметры, характеризующие выбранную задачу, а также аппаратные характеристики HPC-кластера (ЮФУ, г. Таганрог). HPC-кластер представляет собой МВС с распределенной памятью, состоящую из 128 вычислительных узлов, объединенных сетью InfiniBand, с пропускной способностью 20 Гбит/с. В качестве вычислительных узлов используется 128 однотипных 16-ядерных Blade-серверов HP ProLiant BL685c, каждый из которых оснащен четырьмя 4-ядерными процессорами AMD Opteron 8356 2.3GHz и объемом ОЗУ 32Гб [2, с.320-321]. Параллельные расчеты произведены с применением технологий MPI на МВС и с учетом параметров, полученных при тестировании данной системы пакетами Linpack и Pallas MPI benchmark.
В качестве величин, характеризующих качество параллельных алгоритмов, использовались коэффициенты ускорения Sp^^f и эффективности алгоритма Ep=Sp/р [3, с.43]. Величина Т1 характеризует время выполнения последовательного алгоритма в
одном процессорном ядре, а Тр - время выполнения алгоритма с использованием p-вычислительных ядер.
При оценке качества построенных алгоритмов учитывалось следующее.
• Время выполнения последовательного алгоритма Ti складывается из времени, необходимого для выполнения вычислений в одном процессорном ядре, а также времени, которое тратится на чтение данных, необходимых для вычислений, из оперативной памяти в кэш-память.
• Для оценки времени выполнения параллельного алгоритма Tp также учитывались накладные расходы на организацию параллелизма (организация и закрытие параллельных секций) и необходимость обмена числами (данными) между узлами кластера. Далее под числом будем понимать вещественную переменную со стандартной двойной точностью в 64-битовом представлении с плавающей запятой, что является необходимым при решении СЛАУ большой размерности.
• Поскольку для передачи данных могут использоваться механизмы как синхронных (блокирующих), так и асинхронных (неблокирующих) передач, то в дальнейшем при оценке операций приема-передачи данных будем рассматривать операции блокирующего типа, которые являются более надежными и не позволяют совместить процессы передачи данных и вычисления.
• Передача данных от одного процессора к остальным может производиться одновременно (в стандарте MPI предусмотрена процедура рассылки от одного процессора всем имеющимся процессорам Broadcast) [3, с.332; 4].
• Процессор может принимать информацию от других процессоров последовательно (в стандарте MPI предусмотрена процедура сборки в одном процессоре значений из других процессоров Reduce) [3, с.332; 4].
• Прием и передача информации между процессорами одновременно не допускается. Данная процедура выполняется за два последовательных шага: на первом шаге процессоры с нечетными номерами отправляют данные, а процессоры с четными номерами осуществляют прием этих данных. На втором шаге роли процессоров меняются - четные выполняют передачу, нечетные - прием. Для поддержки данной процедуры в стандарте MPI предусмотрена процедура Sendrecv [3, с.331; 4]. Метод прогонки подробно рассмотрен в работе [1,
с.76], и, как отмечают авторы, использование данного метода сводит решение СЛАУ с трехдиагональной матрицей к решению последовательности двух задач: разложение матрицы в произведение двухдиаго-нальных матриц и решение СЛАУ с этими матрицами. Такой прием оказывается полезным, если требуется решить серию задач с различными правыми частями. При этом все прогоночные коэффициенты вычисляются только для первой задачи, при решении остальных используется часть коэффициентов, уже рассчитанных. В связи с этим количество операций, необходимых для решения первой задачи, с 8N+1 для решения каждой последующей уменьшается до 5N+3.
К недостаткам данного метода можно отнести тот факт, что «классическая» схема прогонки, представляющая метод исключения Гаусса, учитывающий ленточную структуру матрицы, практически не поддается распараллеливанию. Однако известны работы, в которых такие попытки были предприняты [5; 6; 7]. Несмотря на то, что алгоритм требует меньшего количества арифметических операций по сравнению с другими методами, формулы для вычисления про-гоночных коэффициентов могут являться источником погрешности, поскольку содержат операцию деления на разность близких по значению величин. Поэтому, когда при решении СЛАУ большое значение имеет точность полученного решения, целесообразно использовать метод циклической редукции [4], который свободен от этого недостатка.
В работе [8, с.289-292] проведено сравнение известных методов решения СЛАУ с трехдиагональ-ной матрицей: циклической редукции [4], Бунемана [9] и рекурсивного сдваивания [8]. Все эти методы объединяет логарифмическая зависимость количества шагов метода от размерности задачи (^2^). В [8] отмечается, что алгоритм рекурсивного сдваивания Стоуна, основанный на использовании ассоциативности операции перемножения матриц, имеет лучшие характеристики по количеству требуемых вычислительных затрат. Однако на практике данный метод не применяется, поскольку один из этапов рекурсивного сдваивания (разложение матрицы в произведение двухдиагональных матриц) имеет гораздо худшую устойчивость, чем метод циклической редукции. Неустойчивость алгоритма объясняется возможным ростом результатов при выполнении промежуточных вычислений, связанных с ведущими главными минорами матрицы.
Предложенный в работе [5, с.139-146] алгоритм распараллеливания прогонки (метод Н.Н.Яненко -А.Н.Коновалова) позволяет на первом этапе рассчитывать коэффициенты и неизвестные параллельно, однако при использовании МВС с распределенной памятью возникает необходимость передачи данных между процессорами. Второй этап, связанный с решением СЛАУ для параметрических неизвестных, практически не поддается распараллеливанию: решение происходит последовательно в одном процессоре, остальные простаивают.
В работе [7, с. 151-162] автором выдвигается идея замены фрагментов метода Стоуна, связанных с решениями двухдиагональных СЛАУ, а именно замена сдваивания на последовательно-параллельный метод организации вычислений. Автор считает, что благодаря использованию приёма нормировки, характерного для последовательных операций [10], стало возможным сочетать параллельность с устойчивостью разложения трёхдиагональной матрицы.
Метод циклической редукции для трехточечных уравнений. Для обозначения алгоритмов введем индекс, характеризующий способ реализации: (1) - последовательный, (р) - параллельный.
Выполним оценку времени выполнения последовательного алгоритма метода циклической редукции (CR), которая складывается из времени вычислений и времени доступа к оперативной памяти:
Т CR Т ар+Т оп 5 (1)
где Т1 ар - время выполнения арифметических операций; Т1оп - время доступа к памяти.
Общее время выполнения вычислений складывается из времени вычисления коэффициентов на прямом ходе и времени вычисления неизвестных на обратном ходе и определяется следующим образом: Т1 =Т1 +Т1 к =
1 ар 1 пр 1 1 об
~ I = (2)
12а Е
и=1
11=0 V22
= 12 Гар(Ы^2Ы-1)+5 Гар(Ы-1),
где N - размерность задачи, 1ар - среднее время выполнения базовой арифметической операции (для простоты расчетов будем полагать, что все вычислительные операции имеют одинаковую длительность). Конечно, данное предположение вносит определенную погрешность при вычислении (2), т.к., во-первых, реальные длительности различных арифметических операций существенно отличаются друг от друга и, во-вторых, для получения более точной оценки необходимо учитывать совокупную скорость выполнения арифметических выражений на процессорном конвейере, а также особенности многоуровневой памяти. Поэтому при реализации на одной и той же МВС различных алгоритмов величина 4 различна. Для оценки 4 на практике используется следующий прием, предложенный в [2]: необходимо измерить время выполнения последовательного алгоритма при небольших объемах данных, которые полностью помещаются в кэш-память, исключив возможность обращения к оперативной памяти. Результат делится на количество выполненных операций, и получается среднее время одной «базовой» операции для данного конкретного алгоритма.
Время доступа к оперативной памяти Топ представим как результат деления объема извлекаемых данных на пропускную способность памяти ) [3], при этом учитывая параметры конкретной вычислительной системы, а именно размер кэш-строки (64 байта), латентность доступа к памяти а и частоту возникновения кэш-промахов у (0<у<1) :
Т1оп =т- 4 log2N- 9) у (а+64/Р). (3)
Тогда время выполнения последовательного алгоритма будет получено суммированием выражений (2) и (3):
T1CR =16 1ар( N - - 1)+6 Гар^ - 1) +
+^- 4 log2N- 9) ■ у (а+64/Р). (4) Для параллельного алгоритма метода циклической редукции время выполнения составит [11]:
^PCR=ТPар + ТРоп + Тобм + Г, (5)
где Трар - время выполнения арифметических операций на р-вычислительных элементах; Троп - время доступа к оперативной памяти; Тобм - время выполнения операций обмена информацией между узлами; г -время, необходимое на организацию и закрытие параллельных секций.
Время выполнения арифметических операций определяется по формуле:
ТР =ТР +ТР я =
1 ар 1 пр 1 1 об
1О£2№1
12КР Е
11=1
N
¿Р.
+ 5t
ар
Е
11=0
N 2l2 р
(6)
= 12 tар(N/p-log2N-1)+5 tар(N/p-1)
где р - общее количество вычислительных ядер; квадратные скобки в формуле означают операцию округления до целого, не превосходящего данное. Величина Троп составит:
Троп =т- 4 log2(N/p) - 9). у (а+64/р). (7) Чтобы оценить время выполнения операций обмена информацией, обрабатываемой в различных узлах вычислительной системы, введем следующие обозначения: ки - количество узлов; кр - количество однотипных ядер в узле. Тогда время на обмен между узлами определяется следующим образом:
Тобм = 9 log2(N- 1) (а„+1/Рщ) при N/ku=kp;
Тобм = (8( log2N - 1) +log2p) (ащ+1/Рщ) при N/ku>kp, где апг$- латентность, определяющая время подготовки к передаче данных по сети; )^ - пропускная способность сети.
На рис.1 представлена схема информационных потоков, которыми необходимо обмениваться узлам вычислительной системы на прямом и обратном ходах выполнения алгоритма.
Рис. 1. Структура информационных связей циклической редукции
N=16384
N=32768
N=65536
N=131072
N=262144
64
128
256
512
1-1-1
1024 2048
Рис. 2. Метод циклической редукции. Графики изменения величины ускорения 8р в зависимости от N и р 1,000
-N=16384
-N=32768
-N=65536
-N=131072
-N=262144
64 128 256 512
количество ядер (р)
1024
2048
Рис. 3. Метод циклической редукции. Графики изменения величины эффективности Ер в зависимости от N и р
Из рис. 1 видно, что и на прямом и на обратном ходах метода возникает необходимость в передаче полученных данных между процессорами. Причем на завершающих этапах прямого хода количество простаивающих процессоров с каждым шагом удваивается, аналогичная картина наблюдается на начальных шагах обратного хода.
Для оценки качества параллельного алгоритма используются характеристики, введенные ранее. График изменения коэффициента ускорения Sp в зависимости от размерности задачи N и числа вычислительных элементов (ядер) р представлен на рис.2.
На рис. 3 представлены графики изменения величины Ер, характеризующей среднюю долю времени выполнения алгоритма, в течение которой процессоры реально используются для решения задачи, в зависимости от размерности задачи N и числа вычислительных элементов (ядер) р.
Анализ представленных графиков показывает, что при небольших значениях N ^~104-105) ускорение растет до определенного момента. Далее при увеличении числа вычислительных элементов (ядер) ускорение начинает падать. Это говорит о том, что по сравнению с объемом вычислений, приходящихся на
одно ядро, время на обмены между узлами существенно увеличивается. Аналогично обстоит дело с эффективностью алгоритма (см. рис.3).
Если считать приемлемыми значениями эффективности величины, попадающие в диапазон от 1 до 0.5, то совершенно очевидно, что использование такой системы эффективно только при решении задач размерности N>10 с использованием количества вычислительных элементов не более 128 (для рассматриваемой системы это 8 узлов по 16 ядер в каждом).
Метод прогонки для трехточечных уравнений. Выполним оценку времени выполнения последовательного алгоритма метода прогонки [1], которая складывается из времени вычислений и времени доступа к оперативной памяти:
ГГГ _ гуар . ГТ-<ОП
где Тар(1)- время выполнения арифметических опе-
~ гтОП
раций; ТРК(Г) - время доступа к памяти.
Время на выполнение вычислений для последовательного алгоритма определяется следующим образом:
ТрКт ар = т%т+т£р, = т^+2+ш+5) ^ =
=т+1) ^, (8)
где 1а - среднее время выполнения базовой арифметической операции; N - размерность задачи.
Временные затраты на извлечение необходимых данных из оперативной памяти составят:
тОП 1 РК(Ц ''
. 64
.64
+ + -1). (9)
Время выполнения последовательного алгоритма получено суммированием выражений (8) и (9):
тмт= (8ЛТ + 1К+ + б^)^-!)+ + 264-1) . (10)
Рассмотрим время выполнения параллельного алгоритма метода прогонки (метод Н.Н.Яненко -А.Н.Коновалова), в основе которого лежит идея метода встречных прогонок [5]:
, (11)
гр _'Т'ар
1РЧр) ~1РЧр)
грОП '¿РЖр)
гробм '¿РЖр)
где Тар(р) - время выполнения арифметических опе-
раций на р-ядрах; ТР
ОП
РШ. р)
■ время доступа к оператив-
ной памяти;
1
обм
[ рл^р) - время выполнения операций
обмена информацией между узлами по сети; т -время, необходимое на организацию и закрытие параллельных секций.
Время выполнения арифметических операций при вычислении коэффициентов определяется по формуле: ( \
грар _
ТРН(р) "
17--
N
К -кр
48-к,,+ 23
^а
где N - размерность задачи; ku - общее количество узлов; кр - количество ядер в одном узле; 1а - среднее время выполнения арифметической операции.
тОП
Величина трц(р), характеризующая временные
памяти
затраты на извлечение из оперативной необходимых данных, составит:
\( \ --1
тОП{р)=у\а + 8^
N
К-К
+ Г| «+ 7641(1082N-1)-
(
-У
64
Т
(
N
3 • N
2■ к,,-к„ к,-к„
\\
+ 1
//
р и р
Время выполнения операций обмена информацией, обрабатываемой в различных узлах вычислительной системы, вычисляется по формуле:
ГТ^обм 7 | ~ 8
ТРИ(р)- ки 2-
Для оценки качества параллельного алгоритма используются характеристики, введенные ранее. График изменения коэффициента ускорения Sp в зависимости от размерности задачи N и числа вычислительных элементов (ядер) р представлен на рис.4.
На рис. 5 представлены графики изменения величины Ер, характеризующей среднюю долю времени выполнения алгоритма, в течение которой процессоры реально используются для решения задачи, в зависимости от размерности задачи N и числа вычислительных элементов (ядер) р.
Анализ поведения коэффициента ускорения в зависимости от количества используемых ядер и размерности трехдиагональной системы показывает, что параллельный алгоритм прогонки дает ускорение только при решении задач большой размерности (более 105) на небольшом количестве ядер (не более 64). Если считать приемлемыми значениями коэффициента эффективности величины не менее 0.5, то ни для каких размерностей трехдиагональных систем параллельный алгоритм не является эффективным при параллельной реализации на супервычислительной системе ЮФУ (г. Таганрог).
64
128
■N=16384
■N=32768
•N=65536
■N=131072
■N=262144
256 512 1024 2048
количество ядер {р}
Рис. 4. Метод прогонки. Графики изменения величины ускорения 8р в зависимости от N и р
ф ■в--G-m
64
128
256
512
1024
2048
-N=16384
-N=32768
-N=65536
-N=131072
■N=262144
количество ядер (р)
Рис. 5. Метод прогонки. Графики изменения величины эффективности Ep в зависимости от N и p
Полученные результаты показывают, что на отдельных этапах решения разностных задач математической физики быстрыми прямыми методами на HPC-кластере циклическую редукцию можно использовать в параллельных алгоритмах, которые используют декомпозицию данных, предполагающую параллельное выполнение метода. Что касается метода прогонки, то его целесообразно использовать в алгоритмах, предполагающих такую декомпозицию данных, когда алгоритм реализуется последовательно.
БИБЛИОГРА ФИЧЕСКИЙ СПИСОК
1. Самарский А.А., Николаев Е.С. Методы решения сеточных уравнений/ А.А. Самарский, Е.С. Николаев. - М.: Наука, 1978. - 592с.
2. Георги М.Ю. и др. Многопроцессорная вычислительная система ТТИ ЮФУ: материалы Всероссийской суперкомпьютерной конференции «Научный сервис в сети Интернет: масштабируемость, параллельность, эффективность» / М.Ю. Георги, К.А. Иванов, Д.В. Лапин, Е.Н. Лагунцов, О.И. Самоваров, С.В. Стрижак, А.И. Сухинов, А.Н. Целых. - М.: Изд-во МГУ, 2009.
3. Гергель В.П. Высокопроизводительные вычисления для многоядерных многопроцессорных систем: учебное пособие/ В.П. Гергель. - Н.Новгород: Изд-во ННГУ им. Н.И.Лобачевского, 2010. -425с.
4. Антонов А.С. Технологии параллельного программирования MPI и OpenMP: учебное пособие/ А.С. Антонов. - М.: Изд-во Моск. ун-та, 2012. -344с.
5. Яненко Н.Н. и др. Об организации параллельных вычислений и «распараллеливании» прогонки/ Н.Н. Яненко, А.Н. Коновалов, А.Н. Бугров, Г.В. Шустов // Численные методы механики сплошной среды. - 1978. - №7.
6. Попов А.В. Решение задач линейной алгебры с разреженными симметричными матрицами на MIMD-компьютере/ А.В. Попов //Искусственный интеллект.- 2006. - №4.
7. Фролов А.В. Ещё один метод распараллеливания прогонки с использованием ассоциативности операций: сб. трудов междунар. конф. «Суперкомпьютерные дни в России»/ А.В. Фролов. - М.: Изд-во МГУ, 2015.
8. Stone H.S. Parallel Tridiagonal Equation Solvers // ACM Trans. on Math. Software, Vol. 1, №4 (Dec. 1975) P. 289-307.
9. Buneman O. A Compact Non-iterative Poisson Solver // Rep. 294, Inst. for Plasma Res., StanfordU., Stanford, Calif., 1969.
10. Воеводин В.В., Кузнецов Ю.А. Матрицы и вычисления/ В.В. Воеводин, Ю.А. Кузнецов. М.: Наука, 1984.
11. Сухинов А.И., Овчаренко О.И. Алгоритмы решения систем линейных уравнений с трехдиаго-нальной матрицей на HPC-кластере // Актуальные вопросы технических наук: теоретический и практический аспекты: коллективная монография/ А.И. Сухинов, О.И. Овчаренко. - Уфа: НИЦ «Аэтерна», 2016.
© Ольга Игоревна Овчаренко, 2018 © Частное образовательное учреждение высшего образования «Таганрогский институт управления
и экономики», 2018