Научная статья на тему 'УТОЧНЕНИЕ ЗАКОНА ГУСТАВСОНА ДЛЯ МУЛЬТИПРОЦЕССОРНЫХ КЛАСТЕРНЫХ СИСТЕМ'

УТОЧНЕНИЕ ЗАКОНА ГУСТАВСОНА ДЛЯ МУЛЬТИПРОЦЕССОРНЫХ КЛАСТЕРНЫХ СИСТЕМ Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
109
20
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
УСКОРЕНИЕ / МУЛЬТИПРОЦЕССОРНЫЕ СИСТЕМЫ / КЛАСТЕРНЫЕ ВЫЧИСЛИТЕЛЬНЫЕ СИСТЕМЫ / ЗАКОН ГУСТАВСОНА / ACCELERATION / MULTIPROCESSOR SYSTEMS / CLUSTER COMPUTING SYSTEMS / GUSTAVSON'S LAW

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Гордеев А.В., Горелик Д.В.

Введение: при разработке параллельных программ, предназначенных для выполнения на вычислительных кластерных системах, необходимо учитывать разные факторы, в том числе желательно знать сколько и каких узлов имеется в кластере, учитывать количество и объём межпроцессных сообщений, понимать потенциальные ограничения на возможное ускорение вычислений. Цель исследования: проанализировать потенциальные ускорения, которые могут быть получены на многопроцессорных вычислительных системах, из которых создаются современные кластерные системы, опираясь на известный закон Густавсона и модифицируя его. Рассмотреть поведение ускорения при разном количестве процессоров и узлов в кластере. Результаты: анализ показал как при росте количества узлов в кластере растет количество межузловых обменов сообщений и, соответственно, как ускорение начинает снижать свой рост. Практическая значимость: для сокращения межпроцессных обменов по сети и, соответственно, для ускорения вычислений, необходимо при программировании максимально использовать многопоточность и, тем самым, уменьшать сетевые межпроцессные коммуникации.

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Гордеев А.В., Горелик Д.В.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

CLARIFICATION OF THE GUSTAVSON LAW FOR MULTIPROCESSOR CLUSTER SYSTEMS

Introduction: when developing parallel programs intended for execution on computing cluster systems, it is necessary to take into account various factors, including it is desirable to know how many and which nodes are in the cluster, take into account the number and volume of interprocess messages, and understand the potential limitations on speeding up computations. Objective: to analyze the potential accelerations that can be obtained on multiprocessor computing systems, from which modern cluster systems are created, based on the well-known Gustavson law and modifying it. Consider the acceleration behavior for a different number of processors and nodes in a cluster. Results: the analysis showed how, with an increase in the number of nodes in a cluster, the number of internode message exchanges increases and, accordingly, how the acceleration begins to reduce its growth. Practical significance: in order to reduce internetwork exchanges and, accordingly, to speed up computations, it is necessary to use multithreading as much as possible in programming and, thereby, reduce interprocess communications.

Текст научной работы на тему «УТОЧНЕНИЕ ЗАКОНА ГУСТАВСОНА ДЛЯ МУЛЬТИПРОЦЕССОРНЫХ КЛАСТЕРНЫХ СИСТЕМ»

TECHNICAL SCIENCES

УДК: 004;621.398;681.5;681.324:681.3.001.57

УТОЧНЕНИЕ ЗАКОНА ГУСТАВСОНА ДЛЯ МУЛЬТИПРОЦЕССОРНЫХ КЛАСТЕРНЫХ

СИСТЕМ

Гордеев А. В.,

доктор техн. наук, профессор Горелик Д. В.

аспирант

Санкт-Петербургский государственный университет аэрокосмического приборостроения,

CLARIFICATION OF THE GUSTAVSON LAW FOR MULTIPROCESSOR CLUSTER SYSTEMS

Gordeev A.,

Dr. Sc., Tech., Professor Gorelik D.

Aspirant,

St. Petersburg State University of Aerospace Instrumentation

Аннотация:

Введение: при разработке параллельных программ, предназначенных для выполнения на вычислительных кластерных системах, необходимо учитывать разные факторы, в том числе желательно знать сколько и каких узлов имеется в кластере, учитывать количество и объём межпроцессных сообщений, понимать потенциальные ограничения на возможное ускорение вычислений. Цель исследования: проанализировать потенциальные ускорения, которые могут быть получены на многопроцессорных вычислительных системах, из которых создаются современные кластерные системы, опираясь на известный закон Густавсона и модифицируя его. Рассмотреть поведение ускорения при разном количестве процессоров и узлов в кластере. Результаты: анализ показал как при росте количества узлов в кластере растет количество межузловых обменов сообщений и, соответственно, как ускорение начинает снижать свой рост. Практическая значимость: для сокращения межпроцессных обменов по сети и, соответственно, для ускорения вычислений, необходимо при программировании максимально использовать многопоточность и, тем самым, уменьшать сетевые межпроцессные коммуникации.

Abstract:

Introduction: when developing parallel programs intended for execution on computing cluster systems, it is necessary to take into account various factors, including it is desirable to know how many and which nodes are in the cluster, take into account the number and volume of interprocess messages, and understand the potential limitations on speeding up computations. Objective: to analyze the potential accelerations that can be obtained on multiprocessor computing systems, from which modern cluster systems are created, based on the well-known Gustavson law and modifying it. Consider the acceleration behavior for a different number of processors and nodes in a cluster. Results: the analysis showed how, with an increase in the number of nodes in a cluster, the number of inter-node message exchanges increases and, accordingly, how the acceleration begins to reduce its growth. Practical significance: in order to reduce internetwork exchanges and, accordingly, to speed up computations, it is necessary to use multithreading as much as possible in programming and, thereby, reduce interprocess communications.

Ключевые слова: ускорение, мультипроцессорные системы, кластерные вычислительные системы, закон Густавсона.

Keywords: acceleration, multiprocessor systems, cluster computing systems, Gustavson's law.

Введение

В настоящее время основным направлением создания суперкомпьютеров - высокопроизводительных вычислительных систем, предназначенных для выполнения ресурсоёмких вычислений -является объединение большого числа вычислительных систем с помощью сетевых технологий и построение из них вычислительного кластера. В то же время основным, относительно недорогим, но достаточно эффективным способом повышения производительности обычных вычислительных систем является увеличения числа процессоров (процессорных ядер и многоядерных процессоров), которые имеют общий доступ к оперативной памяти

системы. Это так называемые SMP-системы -Symmetric MultiProcessing - мультипроцессорные системы с общей памятью. И кластерные системы тоже в качестве узлов кластера стали использовать мультипроцессорные компьютеры. Такие кластерные системы иногда называют Constellation-систе-мами.

Современные процессоры в большинстве случаев являются многоядерными, где ядро - это, по сути, самостоятельный процессор; иногда его называют логическим. То есть при построении вычислительной системы на таком процессоре мы получаем мультипроцессорную систему с общей памятью.

При этом мы можем построить систему с несколькими такими мультиядерными процессорами. Например, на серверной материнской плате достаточно часто размещают два или даже четыре муль-тиядерных процессора, а каждый процессор содержит уже по 8, 12, 16 и более ядер. Существенной разницы между ядром процессора или одноядерным процессором нет. Поэтому в дальнейшем мы будем исходить из понятия логического процессора, которым является либо ядро мультиядерного процессора, либо одноядерный процессор.

Статья посвящена анализу возможных ускорений в мультипроцессорных кластерных системах с учётом потерь на обмены сообщениями между параллельно выполняющимися ветвями программы. Эта проблематика до сих пор актуальна, ей посвящено достаточно много работ [1-6], хотя до сих пор нет простого и эффективного подхода, который позволил бы автоматизированно адаптировать программы для быстрого выполнения на разных кластерах. Главное препятствие это разное количество процессоров в узле кластера, разное количество узлов, и возникающие при программировании сложности в одновременном использовании двух разных технологий - многопоточности и технологии обмена сообщениями . Есть определенные сложности и в получении оценок получаемых ускорений

[7-11].

Понятие ускорения и законы Амдала и Гу-ставсона

В силу различных особенностей и сложности параллельных систем для оценки их эффективности используется и постоянно совершенствуется система специальных метрик. Рассмотрим одну из распространённых метрик - ускорение вычислений. Напомним, что ускорение (SpeedUp) — это отношение времени, требуемого для выполнения лучшего из последовательных алгоритмов на однопроцессорной системе (или на одном процессоре) ко времени параллельного вычисления на N процессорах

[12]. Без учета коммуникационных издержек ускорение S определяется по следующей формуле:

(1)

5

Т1 - время выполнения последовательной версии приложения (на 1 процессоре);

- время выполнения параллельной версии приложения на N процессорах.

Теоретически ускорение (1) могло бы являться линейной функцией от числа процессоров (равняться №), однако, в реальности такое ускорение практически не встречается из-за множества факторов. И самый главный фактор скрыт в самом алгоритме вычислений, который разрабатывается как параллельный. Параллельные алгоритмы содержат не только «параллельные» части, которые могут выполняться параллельно на некоем множестве процессоров, но и «последовательные», которые не удается распараллелить. Например, для запуска параллельно выполняющихся вычислений на N процессорах нужно инициировать эти вычисления на одном процессоре, что можно рассматривать как последовательную часть параллельной программы. К тому же чаще всего полученные результаты вычислений нужно собрать вместе. Другими словами, последовательная часть алгоритма не может быть распараллелена и её тоже нужно принимать во внимание.

Известный закон Амдала (2) [ 13 ] констатирует, что максимальное ускорение для алгоритма ограничено относительным числом операций, которые должны быть выполнены последовательно и которые не допускают распараллеливания, то есть последовательной частью алгоритма.

с =¿1 = .

^м — _ —

Тм 1+(М-1)*/ '

(2)

Здесь f - последовательная часть алгоритма.

Построим график (смотри рисунок 1), в котором N будет изменяться в диапазоне от 1 до 32, а последовательная часть алгоритма f будет составлять 20%

N

Рис. 1 Закон Амдала

Таким образом, согласно закону Амдала ускорение всегда ограничено долей последовательных вычислений. Чем она выше, тем меньшее ускорение мы сможем достичь, причем с увеличением числа процессоров вклад каждого нового процессора становится всё меньше и меньше. При построении SMP-систем с большим числом процессоров мы в явном виде наблюдаем этот эффект, но на самом деле замедление роста ускорения связано ещё и с возникающими конфликтами при доступе к общей разделяемой между процессорами памяти. Мало того, что быстродействие основной памяти системы на несколько порядков меньше быстродействия процессоров, так еще нужно обращаться к ней с разделением доступа. В какой-то мере сглаживает это несоответствие скоростей наличие у каждого процессора локальной кэш-памяти, но с ростом числа процессоров ситуация усугубляется и усложняется решение задачи обеспечения когерентности.

Интересные и неожиданные результаты были опубликованы в работе [ 14 ] . При построении облачных кластерных систем было обнаружено, что с ростом числа узлов ускорение выполнения параллельных программ может не только ограничиваться в соответствии с законом Амдала, но и начать уменьшаться, и даже стать меньше единицы! Анализ показал, что это происходит когда число параллельных ветвей программы начинает превосходить количество процессоров в узле кластера и вычисле-

ния замедляются из-за потерь на обмены между узлами, которые начинают осуществляться через сеть. А для уменьшения этого эффекта в упомянутой работе было предложено сокращать потери времени на сетевые коммуникации посредством оптимизации кода ядра операционной системы GNU/Linux.

Помимо закона Амдала широко известен закон Густавсона, который снимает ограничение на рост ускорения при увеличении числа процессоров [ 12, 13 ]. Дело в том, что на практике столкнулись с тем, что получаемые ускорения после переработки последовательных программ в их параллельные аналоги превосходят значения, прогнозируемые законом Амдала. И Густавсон высказал предположение о том, что с ростом числа процессоров фактически происходит увеличение доли параллельных вычислений. Другими словами, если эти параллельные вычисления выполнять последовательно (на одном процессоре, а не на нескольких), то при увеличении количества параллельных вычислений происходит сокращение доли последовательного (не распараллеливаемого) кода в последовательном варианте приложения.

При оценке ускорения закон Амдала предполагает, что объем задачи остается постоянным. Величина ускорения по закону Амдала показывает, во сколько раз меньше времени потребуется параллельной программе для выполнения. Однако величину ускорения можно рассматривать и как увеличение объема выполненной задачи за постоянный

промежуток времени. Закон Густафсона появился именно из этого предположения.

Если взять /— долю последовательных вычислений в рамках алгоритма, то получим ускорение, равное (по закону Густавсона [14]):

Tn

p*N+f P+f

."(p+n + U^L — N + d-

P+ f P+ f

P+ f

(3)

где f - доля последовательных расчетов в программе,

р - доля параллельных расчётов в программе, Р=К

N - количество процессоров.

Построим график закона Густавсона (3) (смотри рисунок 2), где N будет изменяться в диапазоне от 1 до 32, а доля вычислений, которые нельзя распараллелить, составляет 20% ^=0.2).

Рис. 2 Закон Густавсона

Однако в указанной формуле, которая в целом справедлива для SMP-систем при относительно небольшом числе процессоров, не учтено время передачи данных между процессорами, находящимися на разных узлах кластера, а для кластерной архитектуры это время может являться существенным, поэтому его необходимо учитывать. В случае кластерной архитектуры введем параметр ty - время сетевого взаимодействия между двумя вычислительными процессами, выполняющихся на разных узлах кластера (i и j). Тогда получим следующую формулу (4) для оценки времени выполнения параллельного приложения на N процессорах (на нескольких узлах):

Tn —

(p + f)* T

+

1 1

(4)

соединения, если процессоры расположены на разных узлах кластера) и числом совершаемых операций обмена. Для оценки можно взять минимальное значение суммы (5), которое равно:

min

in1 1

t ij — in

11

1=1 ]=1

Время обмена определяется скоростью обмена данными между процессорами (скоростью сетевого

(5)

1=1 ¡=1 1=1 ¡=1

Где С(^) — функция, соответствующая расстоянию между узлами, dij — параметр, характеризующий соединения процессорных ядер между собой (таким образом учитывается и вариант мультипроцессорных узлов кластера), Ь — характерное время (некоторое значение). Если предположить, что мультипроцессорные узлы одинаково загружены расчетами и обменами данных, то получим следующую формулу:

min

În1 1

Су - р *У*Т1* Ы2, (6) =1 =1

Здесь коэффициент в отражает особенности архитектуры, коэффициент у равен отношению

производительности процессорного ядра к производительности сети. Это выражение (6) соответствует тому, что было опубликовано в работе [2]. Можно свести эту формулу именно к случаю взаимодействия одноядерных процессоров на узлах по сети (один процессор на узле), так как несмотря на то, что здесь рассчитывается минимально возможное время передачи данных, оно будет ограничено скоростью передачи данных по сети (самый медленный вариант в сравнении с передачей данных на узле). Таким образом, формула для расчета времени выполнения параллельного алгоритма на N узлах принимает следующий вид:

Определим Т как суммарное время собственно вычислений и время обмена.

Т = Т 4- Т 1 1 В^1Ч ' 1 обм

Тобм

(1,

опер

* к

объем

Уобм

(9)

где:

Фопеп - количество обменов;

опер обм

скорость обмена;

Т„ =

(Р+0*П

+ Р *у *Т1* Ы2, (7)

р * N + /

А ускорение, соответственно, будет равно:

_Т\_

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

5"=т»=(р+1):тг1+р*у*т1*т р * N + / г ' 1

р * N + /

N + (1-Ы)

Б„ = М + (1-Ю

p + f + P*y*N2

Г

p+f + P*Y*N2

Г

р+/ + /?*у*Л/2

(8)

Уобъем - объем обмена.

Другими словами, время обмена (9) зависит от количества обменов Q операций обмена, скорости обмена (X) и объема обмена (V).

Тогда Т будет явно зависеть от времени обмена данными между процессорами. Этот показатель будет учитывать особенности архитектуры и отношение производительности процессорного ядра к производительности сети.

График уточненного закона Густавсона (8) отображен на рисунке 3. Здесь N изменяется в диапазоне от 1 до 32, f = 0,2, время на обмен данными изменяется в диапазоне от 0,2 до 6,4 так как с увеличением количества процессоров у нас растет число обменов, а значит и их продолжительность.

Рис.3 Уточненный закон Густавсона для однопроцессорных узлов (8)

Как видно, в этом случае увеличение числа процессоров, задействованных в расчетах, уже уменьшает ускорение из-за взаимодействия узлов между собой (главный сдерживающий фактор в рамках кластерной архитектуры — передача данных по сети).

Однако, поскольку нас интересуют многопроцессорные кластеры, построим зависимость для случая, когда у нас один узел кластера может в себе содержать не 1, а 32 процессора. Таким образом, если число процессоров, на которых могут выполняться параллельные вычисления увеличить до 256,

то мы получим 8 узлов. Данная зависимость представлена на рисунке 4. Следует обратить внимание, что в рамках первого узла (до 32 процессоров) ускорение ведет себя по каноническому закону Гу-ставсона, линейно возрастая, и влияние взаимодействия процессоров внутри одного узла между собой минимально. Однако с появлением второго узла (отрезок от 32 процессоров до 64), картина начи-

нает меняться. Становится отчетливо видно влияние времени, которое уходит на взаимодействие процессов, выполняющихся на разных узлах кластера (появились межсетевые передачи). Хорошо видно, что чем больше становится узлов в кластере, тем меньше повышается ускорение; сказывается влияние и особенности конкретной организации кластера.

Рис.4 Уточненный закон Густавсона для 8узлов, имеющих по 32 процессора (8)

При создании параллельных программ для SMP-систем часто используют технологию OpenMP - стандарт для программирования систем с общей памятью [9]. А при разработке приложений, которые будут выполняться на вычислительных кластерах, используют технологию MPI и среди известных библиотек для написания таких приложений есть OpenMPI [11]. В параллельных вычислениях есть две концепции и обе они совершенно разные. Первая - синхронное и асинхронное программирование, и вторая - однопоточные и многопоточные программы. Каждая программная модель (синхронная или асинхронная) может работать в однопоточной и многопоточной среде. Мно-гопоточность - это свойство платформы (например, операционной системы, виртуальной машины и т.д.) или приложения, состоящее в том, что процесс, порождённый в операционной системе, может состоять из нескольких потоков, выполняющихся «параллельно», то есть без предписанного порядка во времени [15] Суть многопоточности заключается в квазимногозадачности на уровне одного исполняемого процесса, то есть все потоки выполняются в адресном пространстве процесса. Кроме

этого, все потоки процесса имеют не только общее адресное пространство, но и общие дескрипторы файлов.

Именно для возможности совмещать в одной параллельной программе две вышеупомянутые технологии и был доработан стандарт MPI до уровня MPI2. Однако далеко не все доступные к использованию библиотеки реализуют его возможности. Поэтому актуальной остается задача поиска путей создания параллельных распределенных программ для мультипроцессорных кластерных систем, которые бы могли достигать максимальных ускорений и при этом не были слишком сложными [16].

Очевидным способом может стать отказ от создания параллельной программы, которая должна выполняться на вычислительном кластере, как обычной однородной многопроцессной программы. Другими словами, можно организовать обмен сообщениями между процессами одного узла (который является SMP-системой, т.е. содержит в себе множество процессоров) с помощью модифицированной библиотеки MPI, в которой для обмена сообщениями между процессами одного узла будут использоваться не сетевые протоколы, а обычные

именованные каналы, поскольку они работают намного (!) быстрее. А между процессами, которые должны выполняться на разных узлах кластерной системы, нужно по-прежнему использовать обычные функции MPI, которые задействуют сетевой механизм передачи данных. В работе [17] проанализировано возможное снижение числа сетевых обменов, в случае использования обменов через каналы передачи данных (через оперативную память узла кластера), которая позволяет сократить их в К раз, где К количество логических процессоров.

Таким образом, предстоит исследовать две концепции. Первая состоит в использовании многопоточного программирования, где в каждом из параллельных процессов запускается несколько потоков и не используется механизмы MPI (при соответствии числа потоков числу процессоров внутри кластера). А между процессами по прежнему идут обмены сообщениями. А вторая - в модификации библиотеки MPI и использовании разных механизмов обмена сообщениями внутри и между мультипроцессорными узлами.

Для оптимального сочетания многопоточно-сти и использования межпроцессных коммуникаций предлагается исходный параллельный информационно-управляющий граф проектируемой параллельной программы разбивать на минимально связанные между собой подграфы. Количество вершин в подграфе не должно превышать числа логических процессоров в узле кластерной системы, при этом желательно, чтобы в таком подграфе было максимум рёбер. При этом количество рёбер между получаемыми подграфами должно быть минимизировано. Это позволит уменьшить число обменов межпроцессными сообщениями, и, тем самым, увеличить ускорение параллельной программы.

Список литературы:

1. Гергель В.П. Новые языки и технологии параллельного программирования. - М.: Издательство Московского университета, 2012. 434с.

2. Ахмед Набиль М.М. Методики для повышения эффективности протоколов передачи данных в системах // Современная наука: актуальные проблемы теории и практики: Серия «Естественные и Технические науки». Москва, № 7-8 2017, С. 27-29, ISSN - 2223-2966.

3. Чубахиро, А. Виртуальные вычислительные сети для случая аппаратной виртуализации Журнал «Современная наука: актуальные проблемы теории и практики. Серия «Естественные и технические науки»». — N° 6, 2018(Июнь). - С. 158163. - ISSN:2223-2966.

4. Ежова Н.А., Соколинский Л.Б. BSF: Модель параллельных вычислений для многопроцессорных систем с распределенной памятью. 1,2 УрО РАН, 620219, г. Екатеринбург, ул. С. Ковалевской, 16 2018 стр: 253-265

5. OpenMP FAQ https://www.0penmp.0rg/ab0ut/0penmp-faq/#WhatIs (дата обращения: 28.02.2019)

6. FAQ: General information about the Open MPI Project https://www.open-mpi.org/faq/7cate-gory=general#what-is-mpi (дата обращения: 06.03.2019)

7. Open MPI http://spi-inc.org/projects/open-mpi/ (дата обращения: 03.03.2019)

8. MPI

https://www.opennet.ru/docs/RUS/MPI_intro/ (дата обращения: 03.03.2019)

9. Jakub Jelinek What's new in OpenMP 5.0 https://developers.redhat.com/blog/2019/03/19/whats-new-in-openmp-5-0/ (дата обращения: 30.03.2019)

10. Kendall, W. MPI Send and Receive / W. Kendall. -

1. http://mpitutorial.com/tutorials/mpi-sendand-receive/ (дата обращения: 15.05.2019)

11. Measuring Time with MPI https://www.cod-ingame.com/playgrounds/349/introduction-to-mpi/measuring-time дата обращения: 21.05.2019)

12. Воеводин В.В., Воеводин Вл.В. Параллельные вычисления. - СПб.: БХВ-Петербург, 2002. - 608с.

13. Гергель В.П. Высокопроизводительные вычисления для многоядерных мультипроцессорных вычислительных систем. - Нижний Новгород; Изд-во ННГУ им. Н.И.Лобачевского, 2010. - 421с.

14. Message Passing Interface Forum. MPI: A Message-Passing Interface Standard. http://www.mpi-forum.org/docs/mpi1-report.pdf (дата обращения: 05.03.2019)

15. Ахмед Набиль М.М. Повышение эффективности протоколов передачи данных в системах высокопроизводительных вычислений кластерной архитектуры // Диссертац. на соиск. учен.степ. канд.техн.наук по спец. 05.13.15 Вычислительные машины, комплексы и компьютерные сети. ЛЭТИ, 2018.

16. Mario Nemirovsky, Dean M. Tullsen. Multithreading Architecture. — Morgan and Claypool Publishers, 2013. — 1608458555 p. — ISBN 1608458555. (англ.)

17. Гордеев А.В., Горелик Д.В. Об ускорении распределенных вычислений в мультипроцессорных кластерных системах // Научная сессия ГУАП: Сб. Докл.: в 4 ч. Ч.2. Технические науки / СПб.: ГУАП., 2019 С. 391 - 395.

i Надоели баннеры? Вы всегда можете отключить рекламу.