Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Алгоритмы решения систем линейных уравнений с блочно-ленточными матрицами. Монография

.pdf
Скачиваний:
0
Добавлен:
06.09.2026
Размер:
2 Мб
Скачать
Алгоритмы решения СЛАУ с блочно-ленточными матрицами. Глава 1 11
Рисунок 4. Кольцевая сеть.
Кольцевая сеть бывает однонаправленной и двунаправленной: однона-
правленное кольцо позволяет пересылать данные только в одну сторону, а двунаправленное — в обе стороны. И та, и другая кольцевая сеть обладает симметрией, а количество ребер равно количеству вершин. Двунаправлен­ная кольцевая сеть использовалась, например, в суперкомпьютере ПС-2000.
Многомерная решетка (mesh) — это коммуникационная сеть, вершины
которой расположены в узлах многомерной целочисленной декартовой ре­шетки, а связи соединяют соседние узлы по координатным направлениям.
Рисунок 5. Двумерная решетка.
Вершины, находящиеся на границе решетки, во многих случаях попар-
но связываются между собой.
Частный случай многомерной решетки — тор. Тор — это решетка, у
которой противоположные (симметричные относительно координатных плоскостей) граничные узлы соединяются между собой.
12 Б. Я. Штейнберг, О. Б. Штейнберг
Рисунок 6. Двумерный тор.
Диаметр графа — это наибольшее расстояние между всеми парами вер­шин. От диаметра коммуникационной сети зависит время пересылки данных.
Диаметр звезды равен 2. Однонаправленная кольцевая сеть имеет ди­аметр, равный количеству вершин, а двунаправленная — равный поло­вине от количества всех вершин (процессорных элементов). Диаметр m-мерной решетки размера N = n1*n2 *…* nm равен сумме размерностей (n1 + n2 + … + nm), а m-мерного тора — половине суммы (n1 + n2 +…+ nm) / 2. Если все стороны решетки равны, то диаметр m-мерной решетки равен
m*N
1/m
, а диаметр m-мерного тора — m*N
1/m
/ 2. Нетрудно заметить, что
одномерная решетка оказывается кольцом.
Чтобы большой диаметр кольцевой шины сократить (и этим самым сократить время пересылок данных), можно соединить процессорные эле­менты еще одним кольцом (или несколькими кольцами). Если вершины первого кольца занумерованы в порядке их следования (например, по ча­совой стрелке), то, ввиду естественных требований регулярности (симме­трии), второе кольцо должно соединять вершины, разность номеров между которыми постоянна (по модулю количества всех вершин N).
Рисунок 7. Двойное кольцевое соединение.
Алгоритмы решения СЛАУ с блочно-ленточными матрицами. Глава 1 13
1
7
1 2 3
12
11
2
3
4
9
8
Рисунок 8. Двойное кольцо, изоморфное решетке.
5
6
4 5 6
7 8 9
10 11 12
Рисунок 9. Решетка, изоморфная двойному кольцу.
Рисунок 10. Двумерный и трехмерный кубы.
14 Б. Я. Штейнберг, О. Б. Штейнберг
Рисунок 11. Четырехмерный куб.
Графы малого диаметра — это однородные графы с фиксированным диаметром и наибольшим количеством вершин. Такие графы интересны в качестве использования для топологии коммуникационных сетей, посколь­ку при большом количестве узлов наибольшее расстояние между узлами в таких графах невелико. Но такие графы часто оказываются не планарными, что бывает неудобно при их использовании на микросхемах. На следующем рисунке изображен граф однородный степени 4 диаметра 3 с 17 вершинами.
Рисунок 12. Граф однородный степени 4 диаметра 3 с 17 вершинами.
Алгоритмы решения СЛАУ с блочно-ленточными матрицами. Глава 1 15
Заметим, что не существует графа однородного степени 4 с 17 вер-
шинами диаметра 2 (известная переборная задача для олимпиад старше­классников).
Несложно показать, что количество вершин у графа однородного степе-
ни k диаметра d не более 1 + k * ((k – 1) d – 1) / (k – 2).
Граф Петерсена и трехмерный куб оба сильно симметричны (группа
автоморфизмов действует на графе транзитивно) и имеют одинаковую сте­пень однородности, но при этом у графа Петерсена вершин больше, а диа­метр меньше.
Рисунок 13. Однородный степени 3 граф Петерсена с 10 вершинами и диаметром 2.
Часто возникает практически важная задача переноса программ с од-
них многопроцессорных вычислительных систем на другие с условием сохранения высокой производительности. Если вычислительные системы отличаются не только количеством вычислительных устройств, но и ком­муникационной системой, то возникает проблема перепрограммирования пересылок на новую коммуникационную сеть. Если сеть имеет гамильто­нов цикл (цикл, проходящий через каждую вершину в точности один раз), то такой цикл и можно взять в качестве кольцевой сети. Таким образом, кольцевые пересылки данных можно переносить на ВС со многими комму­никационными сетями: решетки, кубы, графы малого диаметра. В [35] от­мечается перспективность кольцевых пересылок на ВС близкого будущего.
16 Б. Я. Штейнберг, О. Б. Штейнберг
1.2. Модели параллельных вычислений
Архитектура SIMD (single instruction, multiple data) предполагает воз- можным одновременное выполнение некоторой операции (например, сло­жение или умножение) для разных пар операндов.
Примерами компьютеров с такой архитектурой и распределенной па­мятью являются самый первый суперкомпьютер ILLIAC-4, суперкомпью­тер с наибольшим (долгое время) количеством процессоров Connection Machine 2 (64000 процессорных элемента), советский массовый (выпущено более 240 штук) суперкомпьютер ПС-2000 и др. [36], очень успешный в свое время векторный суперкомпьютер Cray1. В последнее время вычислитель­ные архитектуры SIMD выпускаются векторные с общей памятью. К ним относятся графические карты (GPU-ускорители), SIMD-ускорители SSE и AVX процессоров Intel, векторные ускорители mali для процессоров архи­тектуры ARM. На SIMD архитектуру эффективно отображается достаточно представительный класс алгоритмов, имеющих регулярную структуру ин­формационных зависимостей: задачи линейной алгебры с заполненными матрицами, некоторые конечно-разностные и конечно-элементные методы решения уравнений математической физики в прямоугольных областях, не­которые алгоритмы БПФ и др. Поскольку все процессоры в каждый момент выполняют одинаковые операции, архитектура SIMD синхронная.
Архитектура MIMD (multiple instruction, multiple data — много команд — много данных) предполагает одновременное выполнение на разных вычис­лительных устройствах разных независимых алгоритмов. К архитектуре MIMD относятся высокопроизводительные кластеры (с распределенной памятью) и многоядерные процессоры (с общей памятью). Вычислитель­ные системы с архитектурой MIMD асинхронные.
Многие современные вычислительные системы содержат одновремен­но элементы архитектуры MIMD и элементы архитектуры SIMD.
Вычислительные архитектуры последних лет зачастую опираются на идеи прежних архитектур, но то, что раньше было суперкомпьютером, те­перь может стать системой на кристалле.
Многоканальная память позволяет ускорять обращение к памяти про­порционально количеству каналов, если используемые данные лежат в раз­ных модулях памяти, к которым подключены каналы памяти. К сожалению, многоканальная память управляется процессором и ОС, а программистам не предоставлены инструменты влияния на такое ускорение. Многоканаль-
Алгоритмы решения СЛАУ с блочно-ленточными матрицами. Глава 1 17
ная оперативная память DDR4 [37; 38] имеет диапазон частот от 2133 МГц до 4400 МГц.
В последнее время появляются вычислительные архитектуры с локаль-
ной памятью (на микросхеме процессора), которая позволяет хранить дан­ные без обращения к оперативной памяти. Такая локальная память имеет преимущество по сравнению с кэш-памятью для задач, в которых много операций записи в память. Программирование микросхем с такой локаль­ной адресуемой памятью может оказаться более сложным.
Впервые локальная адресуемая память появилась, наверное, у процес-
соров IBM Cell [23]. Такая память, общая для всех ядер, работающих по одной команде в режиме SIMD, используется в графических картах NVidia и ускорителях Intel Xeon Phi.
В 2021 году появилась система на кристалле с более чем 1000 асин-
хронно работающих RISC ядер, каждое из которых имеет свою локальную память: процессор Esperanto — 1092 ядра [39]. Следует отметить и отече­ственную многоядерную систему (16 ядер вычислительных и 5 управляю­щих) [40].
Быстро растет уровень параллелизма у многоядерных процессоров с об-
щей памятью: например, процессор IBM Power 9 [41] способен обрабаты­вать одновременно 96 потоков. Для мобильных приложений используются процессоры с низким энергопотреблением семейства ARM [42], использу­ющие векторные ускорители mali. На процессорах архитектуры ARM соз­дан самый мощный (на текущий момент) суперкомпьютер [43].
При разработке эффективного прикладного ПО используются модели
параллельных вычислений.
Обычно распараллеливаются программные циклы. Под параллельным
выполнением цикла понимается одновременное выполнение его итераций.
Будем рассматривать задачу параллельного выполнения цикла (1). Как
обычно, под распараллеливанием цикла понимаем одновременное выпол­нение его итераций, но это определение предполагает уточнения.
for (j = 1; j < N; j = j+1) {
Statement1(j);
Statement2(j); (1)
Statement3(j);
}
18 Б. Я. Штейнберг, О. Б. Штейнберг
Будем полагать, что цикл (1) удовлетворяет следующим таким огра­ничениям, которые позволяют его преобразовывать должным образом. В частности:
1. В теле цикла (1) счетчик цикла j не меняет значения; из цикла есть только один выход, который выполняется после завершения всех итераций; переход на следующую итерацию возможен только после завершения предыдущей (т. е. в теле цикла нет операторов break, continue и переходов goto за пределы цикла); в теле цикла не ме- няется правая его граница; в теле цикла не должен меняться его шаг.
2. В цикле только вхождения массивов, индексные выражения которых имеют вид (j + k), где j — счетчик цикла, k — некоторая константа или переменная, не меняющая своего значения в теле цикла.
Будем рассматривать две основные модели параллельных вычислений:
SIMD и MIMD.
Модель SIMD выполнения цикла соответствует DO SIM выполнению из статьи [44]. Параллельное выполнение цикла (1) на SIMD предполага­ет, что сначала для всех значений счетчика цикла выполняется оператор Statement1(j), затем для всех значений счетчика цикла выполняется оператор Statement2(j), затем Statement3(j) и т. д.
Будем считать, что для SIMD распараллеливания в теле цикла (1) име­ются только операторы присваивания. В вычислительных системах типа SIMD при распараллеливании в теле цикла не могут быть условные опера­торы, логические выражения которых зависят от счетчика цикла, т. к. в этом случае для одного значения счетчика цикла может возникнуть необходи­мость выполнять разные операции, что противоречит определению SIMD модели. Необходимое условие того, что SIMD параллельное выполнение цикла (1) эквивалентно последовательному выполнению этого цикла — от­сутствие дуг графа информационных связей «снизу-вверх» — от операто­ров с большими номерами к операторам с меньшими номерами [44; 45].
Модель MIMD выполнения цикла соответствует DO CONC выполнению из той же основополагающей статьи [44]. При MIMD распараллеливании цикла (1) для каждого значения счетчика цикла тело цикла рассматривается как самостоятельный процесс или нить (thread). Каждое вычислительное устройство (процессор или процессорное ядро) выполняет свой процесс или нить. Отсутствие дуг циклически порожденной зависимости в (1) яв­ляется необходимым условием эквивалентности распараллеливания на MIMD архитектуру последовательного цикла.
Алгоритмы решения СЛАУ с блочно-ленточными матрицами. Глава 1 19
Заметим, что всякая дуга графа информационных связей, направленная
«снизу-вверх», соответствует циклически порожденной зависимости. Та­ким образом, отсутствие циклически порожденных зависимостей необхо­димо как для SIMD, так и для MIMD параллельных выполнений цикла.
Современные высокопроизводительные вычислительные системы можно
отнести к архитектурам класса GALS (globally asynchronous, locally syn chro- nous), в которых реализована глобальная асинхронность при передаче между синхронными вычислительными устройствами [35]. Например, в многоядер­ном процессоре ядра работают асинхронно, а векторизатор работает синхронно.
В [35] также представлена концепция ВС с программируемой архитек-
турой, в которой множество элементарных машин соединяются распреде­ленной коммуникационной системой, связи которой образуют однородный граф малого диаметра. Эта концепция, появившаяся несколько десятилетий назад, пока носит теоретический характер. С помощью ПЛИС реализуются ВС с архитектурой программируемого конвейера, они дорогие и не ориен­тированы на решение целевых задач данной работы. В [35] представлены и другие модели параллельного программирования для ВС близкого будуще­го экзафлопсной производительности.
1.3. Анализ узких мест
производительности программ
В течение многих десятилетий развития вычислительной техники на-
блюдается опережающий рост производительности процессоров (выполне­ние операций умножения) по отношению к производительности памяти: производительность вычислений растет примерно на 30% в год, а рост про­пускной способности памяти (скорость чтения/записи данных из оператив­ной памяти) растет только на 9% [46]. Если ранее основное время работы компьютера уходило на вычислительные операции, то сейчас — на доступ к данным. Как следствие, для прогноза времени работы алгоритма стали рассматривать сложность алгоритма по обращениям к памяти (см., напри­мер, [47]).
Последовательность прохождения данных в компьютере с современным
многоядерным процессором, имеющем иерархию памяти, выглядит при­мерно следующим образом:
RAM => L3-cache => L2-cache => L1-cache => Register => ALU
20 Б. Я. Штейнберг, О. Б. Штейнберг
Распараллеливание (OpenMP) происходит после L3 — у каждого про­цессорного ядра свой L2-кэш, а векторизация происходит после L1 через векторные регистры.
Для компьютеров с распределенной памятью добавляется коммуника­ционная сеть или коммутатор, и это отражается в представленной схеме:
NET => RAM => L3-cache => L2-cache => L1-cache => Register => ALU.
Каждая стрелка означает путь передачи данных: чем стрелка левее, тем передача дольше.
У разных программ узкое место производительности может быть в раз­ных местах, и зависит это от используемой вычислительной архитектуры. При этом для разных архитектур используются разные приемы оптимиза­ции. В частности, если в программе наиболее глубоко вложенные циклы имеют в теле много операций с небольшим объемом данных, то целесооб­разна оптимизация регистров. Но большинство используемых современ­ных программ имеют много данных, с которыми выполняется относитель­но немного операций, и для таких программ узким местом является доступ к памяти.
Одним из наиболее используемых и эффективных преобразований, уменьшающих количество кэш-промахов, является тайлинг [48].
1.4. Отставание развития оптимизирующих компиляторов от развития процессоров
Промышленные распараллеливающие компиляторы (GCC, ICC, MS­Compiler, LLVM) распараллеливают программы для вычислительных си­стем только с общей памятью. В [49] приводятся результаты экспериментов, показывающие, что все эти современные оптимизирующие компиляторы плохо оптимизируют код, имеют большой неиспользованный потенциал оптимизирующих преобразований. Можно полагать, что для микросхем с сотнями вычислительных ядер этот потенциал оптимизаций больше, чем для процессоров, на которых проводились эксперименты.
Перспективные микросхемы типа «суперкомпьютер на кристалле» имеют распределенную адресуемую локальную память. В работе [50] от­мечается: «Компиляция для параллельной архитектуры с распределенной памятью считается очень сложной задачей … никакого практического и эф­фективного решения в настоящее время не существует». В этой же работе
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]