Мелкозернистые локально-параллельные алгоритмы

УДК [004.421.2+004.9]

ВОРОБЬЁВ Владимир Анатольевич, доктор технических наук, профессор кафедры программирования и высокопроизводительных вычислений института математики, информационных и космических технологий Северного (Арктического) федерального университета имени М.В. Ломоносова.

Автор 97 научных публикаций, в т. ч. одной монографии и 5 учебных пособий

ЮФРяКОВА Ольга Алексеевна, старший преподаватель кафедры программирования и высокопроизводительных вычислений института математики, информационных и космических технологий Северного (Арктического) федерального университета имени М.В. Ломоносова.Автор 13 научных публикаций, в т. ч. одного учебного пособия

МЕЛКОЗЕРНИСТЫЕ ЛОКАЛЬНО-ПАРАЛЛЕЛЬНЫЕ АЛГОРИТМЫ

В работе рассмотрено понятие мелкозернистого локально-параллельного алгоритма, сформулированы его свойства. Описаны два примера оригинальных МЛП-алгоритма на кольцевой и тороидальной вычислительных структурах. Приведены оценки сложности и эффективности распараллеливания.

Ключевые слова: вычислительная сложность, структура алгоритмов, параллельные вычисления, массовое распараллеливание, мелкозернистые локально-параллельные алгоритмы, локальность, архитектура параллельной вычислительной системы, ускорение вычислений.

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

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

1. Достижение фундаментальных технологических пределов.

2. Отказоустойчивая неразрезная технология СБИС.

3. Синтез КАИС-структур на НПМ СБИС.

4. Мелкозернистые локально-параллельные алгоритмы (МЛП-алгоритмы) для прикладных задач [2].

© Воробьёв В.А., Юфрякова О.А., 2013

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

Подобный подход имеет ряд недостатков. Во-первых, процессоры общего назначения менее эффективны, чем специализированные устройства. во-вторых, для решения определенной задачи большая (оставшаяся) часть процессорной логики является избыточной, таким образом, с одной стороны мы имеем незначительное использование ресурсов, а с другой стороны стоимость подобной архитектуры оказывается значительно выше. Кроме того, в вычислительную сложность параллельных алгоритмов входят не только вычислительные, но и коммуникационные аспекты, которые зачастую являются «узким местом» как в производительности, так и в масштабируемости. Дело в том, что с увеличением числа процессоров блоки, на которые разбивается задача, измельчаются, увеличиваются коммуникационные затраты, решение задачи замедляется: происходит вырождение параллелизма [2, 4, 5].

Создание специализированного компьютера, решающего конкретную задачу требует больших финансовых и временных затрат. Другой путь - использование реконфигурируемых логических устройств, когда есть возможность изменять «внутреннюю логику» процессоров, позволяет обойти вышеперечисленные проблемы. одним из устройств этого класса является программируемая логическая интегральная схема (ПЛИС) FPGA. FPGA является матрицей элементарных логических модулей, которые содержат блоки умножения, суммирования, а также логические вентили и их блоки коммутации, что позволяет объединять эти модули необходимым образом, формируя произвольную логическую схему.

Еще одной возможностью реализации мелкозернистой локально-параллельной архитектуры матриц вычислителей является использование современных графических процессоров

(СРЦ) таких как, например, графических процессоров фирмы №УГО1А. Это массово параллельные вычислительные устройства, высокая производительность которых достигается за счет использования мультипроцессорного массива, состоящего из 81МО наборов процессоров, так называемая 8ГМО-архитектура (одна инструкция - много потоков) [3].

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

Рассмотрим подробнее идею мелкозернистого локально-параллельного программирования. Она сводится к следующим требованиям.

1. Необходимо, чтобы структура вычислительной системы отвечала требованию локальности и масштабируемости. Локальность означает, что логически соседние процессоры должны быть соседями и в физическом пространстве и связи между соседями должны быть ограниченной длины. Масштабируемость означает, что система допускает неограниченное наращивание числа процессоров без нарушения локальности. Таковы линейные, матричные, кольцевые и тороидальные структуры. Гиперкуб такими свойствами не обладает.

2. В памяти каждого процессора хранится минимально возможная часть данных, необходимая только для вычисления одного вит-

ка цикла. Каждый новый вычисляемый виток ЫуМ по строкам на кольце из М процессоров.

цикла требует подкачки памяти процессора Предполагается, что длина строк значительно

новой порцией данных от соседей (и только от превосходит длину столбцов, и что строка це-

соседей!). ликом не помещается в локальную память од-

3. Глобальные взаимодействия процессоров ного процессора (в отличие от столбца). Если

с внешней средой допускаются только изредка. в кольце столбцы матрицы расположены в

Таковы загрузка данных и программы, выдача памяти отдельных процессоров, то суммиро-

результата, пуск и останов программы, неко- вание элементов всех N строк происходит па-

торые условные переходы по состоянию всей раллельно по наилучшему последовательному

системы. алгоритму за время t(M-1), с ускорением М

В качестве примера мелкозернистого ло- и эффективностью ~1. Идея этого алгоритма

кального распараллеливания рассмотрим зада- представлена на рисунке. Он суммирует парал-

чу суммирования элементов матрицы размера лельно элементы N строк за время Mt с ускоре-

сдвиг __________________^

суммы процессоры

1 2 3 4

*12

*2, Х22 Х23

V Хп хзз **

*42 Х43

& (Г а' &

1 2 3 4

.V X X X

II 12 13 14

X X X X

21 22 23 24

X X X X

31 32 33 34

X X X X

41 42 43 44

старт этап 1

8 1 31 5 2 42 л 5 13 8 4 24

3 4 1 2

ХІЗ Х14

Х24

хзз Х34

** х43 Х44

Я 1 41 8 2 12 £ “1 23 *' 34

4 1 2 3

хи хп **

Х21 Х22 **

Хзг Х32 **

Х41 Х42 Л«

5 і 21 £ ^ 32 5 5 43 з 4 14

2 3 4 1

хп *12 х 13 х»

Х21 *23 Х 23 х*

ХЗУ Хзз

Х41 Х 43

этап 2 этап 3 этап 4

Локально-параллельное суммирование строк матрицы на кольце

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

'34 + Х31 + Х32' Вектор-сум-

Например, s 3 = х,

42

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

В качестве другого примера мелкозернистого локального распараллеливания рассмотрим умножение двух матриц размера п2 при использовании п2 процессоров, образующих двумерный пхп тор. Все три матрицы можно поэлементно распределить по процессорам, так что в каждом К., в начальный момент располагаются три элемента а.к , Ьи с.= 0 (см. таблицу).

Тогда, при соответствующих сдвигах строк и столбцов, в каждом процессоре можно выполнять операцию накопления с.. = с.. + а,хЬ,.

ґ і] і] гк к,

На рисунке представлен вариант реализации такого процесса при п = 3. Серым цветом выделены те процессоры, в которых на данном этапе выполняются операции накопления. Те строки и столбцы матрицы, в которых выполнялись вычисления, принимают участие в

МАСШТАБИРУЕМОЕ ЛОКАЛЬНО-ПАРАЛЛЕЛЬНОЕ УМНОЖЕНИЕ МАТРИЦ

а11 а 12 а13 а13 а11 а 12 а 12 а13 а11

Ь11 Ь12 Ь13 Ь31 Ь12 Ь13 Ь 21 Ь 32 Ь13

С11 С12 С13 С11 С12 С13 С11 С12 С13

а21 а 22 а 23 а 21 а 22 а 23 а 23 а 21 а 22

Ь 21 Ь 22 Ь 23 Ь11 Ь 22 Ь 23 Ь31 Ь12 Ь 23

С21 С22 С23 С21 С22 С23 С21 С22 С23

азі а 32 азз а31 а 32 азз а31 а 32 азз

Ь31 Ь 32 Ьзз Ь 21 Ь 32 Ьзз Ь11 Ь 22 Ьзз

С31 С32 Сзз С31 С32 Сзз С31 С32 Сзз

II

III

I

а13 а11 а 12

Ь31 Ь12 Ь 23

С11 С12 С13

а 21 а 22 а 23

Ь11 Ь 22 Ьзз

С21 С22 С23

а 32 азз а31

21 Ь Ь 32 Ь13

С31 С32 Сзз

С11 С12 С13

С21 С22 С23

С31 С32 Сзз

а11 а 12 а13

Ь11 Ь 22 Ьзз

С11 С12 С13

а22 а 23 а 21

Ь 21 Ь 32 Ь13

С21 С22 С23

азз а31 а 32

Ь31 Ь12 Ь 23

С31 С32 Сзз

ГС Y YI

циклических сдвигах исходных матриц А и В. Элементы матрицы А циклически сдвигаются вправо, элементы В - вниз. Всего 5 этапов параллельного накопления потребовалось, чтобы выполнить все необходимые 27 таких операций. Вообще, если умножение матриц требует п3 операций накопления, то рассмотренный масштабируемый алгоритм на п2 процессорах укладывается в (2п - 1) этапов параллельного накопления.

Можно заметить, что для выполнения такого параллельного алгоритма требуется всего О(п) операций сдвига, умножения и сложения на каждом процессоре, когда при последовательном алгоритме потребовалось бы выполнить все необходимые 0(п3) операций умножения и сложения.

Оценим производительность этого МЛП-алгоритма. Его сложность О(п). Процесс вычислений состоит из 3-х этапов: пересылка исходных данных на каждый процессор; вычисление произведения блоков; пересылка результата. Пересылка данных занимает п тактов.

Пусть £1(п'.) - время умножения матриц размерно сти пхп при использовании одного процессора, а 1(п) - время умножения матриц на р = п2 процессорах. При последовательном алгоритме потребуется п3 операций. В случае параллельного алгоритма умножение блоков выполняется за время пТши1г Тогда ^(п) = п3 Тши11 , ХМ = п и ускорение ^(п) = ^(и)/ Ш) =п3

Т,„и1/(п Т„и„) = п2.

Итак, ускорение МЛП-алгоритма по сравнению с наилучшим последовательным алгоритмом равно п2.

На этих примерах отчетливо видны характерные особенности МЛП-алгоритмов, их жесткая зависимость от архитектуры вычислительной системы. Перефразируя известный афоризм Э. Дейкстры: «Программа = алгоритм + структура данных», можно высказать следующую формулу.

Параллельная программа = архитектура параллельной вычислительной системы + распределенная структура данных + параллельный алгоритм.

В настоящее время построено и исследовано мало МЛП-алгоритмов. Это обстоятельство можно объяснить недостаточной, до последнего времени, распространенностью доступных аппаратных платформ, удовлетворяющих принципу локальности и содержащих большое количество простых вычислительных ядер с возможностью быстрых обменов между ядрами. Но ситуация быстро меняется в связи с быстрым развитием GPU, инструментов для их программирования в качестве параллельных вычислителей и гибридных суперкомпьютерных архитектур с их использованием. К сожалению, SIMD-архитектура GPU сама по себе не удовлетворяют требованиям локальности и не может использоваться для МЛ11-вычислений. Систематическое построение и исследование МЛП-алгоритмов, как существенных компонентов больших вычислительных задач, становится все более актуальным [1-5], поскольку может стимулировать разработку неразрезных процессорных матриц (НПМ) с локальной MIMD-архитектурой.

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

1. Воеводин В.В. Вычислительная математика и структура алгоритмов. М., 2010.

2. Воробьёв В.А. Об эффективности параллельных вычислений // Автометрия.2000. № 1.С. 50-58.

3. Дербина Ю.В., Березовский В.В. Подходы к реализации мелкозернистой локально-параллельной архитектуры для моделирования экологических рисков // материалы IX междунар. конф.-семинара «Высокопроизводительные параллельные вычисления на кластерных системах». Владимир, 2009. С. 140-144.

4. Юфрякова О.А. Оптимизация количества процессоров для эффективного исполнения параллельных алгоритмов // Научный сервис в сети Интернет: поиск новых решений: тр. междунар. суперкомпьютерной конфер. M., 2012.

5. Юфрякова О.А. Препятствия к неограниченному масштабированию параллельных систем // Научный сервис в сети Интернет: экзафлопсное будущее: тр. междунар. суперкомпьютерной конфер. M., 2011.

References

1. Voevodin V.V. Vychislitel’naya matematika i struktura algoritmov [Computational Mathematics and Algorithm Structure]. Moscow, 2010. 168 p.

2. Vorob’ev VA. Ob effektivnosti parallel’nykh vychisleniy [On the Efficiency of Parallel Computing]. Avtometriya, 2000, no 1, pp. 50-58.

3. Derbina Yu.V, Berezovskiy VV. Podkhody k realizatsii melkozernistoy lokal’no-parallel’noy arkhitektury dlya modelirovaniya ekologicheskikh riskov [Approaches to Implementation of Fine-grained Local-parallel Architecture for Environmental Risks Modeling]. Materialy IX mezhdunarodnoy konferentsii-seminara «Vysokoproizvoditel’nye parallel’nyevychisleniyanaklasternykhsistemakh» [Proc. 9th int. conf.-seminar “High-performance parallel computing on cluster systems”]. Vladimir, 2009, pp. 140-144.

4. Yufryakova O.A. Optimizatsiya kolichestva protsessorov dlya effektivnogo ispolneniya parallel’nykh algoritmov [Optimization of the Number of Processors for Efficient Execution of Parallel Algorithms]. Nauchnyy servis v seti Internet: poisk novykh resheniy: Trudy Mezhdunarodnoy superkomp’yuternoy konferentsii. [Scientific service in the Internet: exaflop future: Proc. int. supercomputing conf.]. Moscow, 2012.

5. Yufryakova O.A. Prepyatstviya k neogranichennomu masshtabirovaniyu parallel’nykh system [Obstacles to Unlimited Scalability of Parallel Systems]. Nauchnyy servis v seti Internet: ekzaflopsnoe budushchee: Trudy Mezhdunarodnoy superkomp’yuternoy konferentsii [Scientific service in the Internet: exaflop future: Proc. int. supercomputing conf.]. Moscow, 2011.

Vorobyev Vladimir Anatolyevich

Institute of Mathematics, Information and Space Technologies, Northern

Yufryakova Olga Alekseevna

Institute of Mathematics, Information and Space Technologies, Northern

FINE-GRAINED LOCAL PARALLEL ALGORITHMS

The paper examines the concept of fine-grained local parallel algorithm and states its properties. Two examples of original MLP-algorithms on the ring and toroidal computing structures are given. Complexity and efficiency of parallelization were estimated.

Keywords: computational complexity, algorithm structure, parallel computing, massive parallelism, finegrained local parallel algorithms, locality, architecture of a parallel computing system, computational speed-up.

Контактная информация: Воробьёв Владимир Анатольевич e-mail: vva100@atnet.ru Юфрякова Ольга Алексеевна e-mail: yufryakova@mail.ru

Рецензент - Андреев П.Д., кандидат физико-математических наук, доцент кафедры информационной безопасности института математики, информационных и космических технологий Северного (Арктического) федерального университета имени M3. Ломоносова