2. План лекции
Введение
Параллельные вычислительные системы
Теоретические основы параллельных вычислений
Принципы разработки параллельных алгоритмов
О.В. Сухорослов () Параллельные вычисления
03 02.03.2011 2 / 89
3. Параллельные вычисления
Использование нескольких процессоров для
Решения задачи за меньшее время
Решения бОльших задач, чем на одном процессоре
О.В. Сухорослов () Параллельные вычисления
03 02.03.2011 3 / 89
4. Параллельные вычисления
Использование нескольких процессоров для
Решения задачи за меньшее время
Решения бОльших задач, чем на одном процессоре
Создание параллельного алгоритма
Поиск параллелизма в последовательном алгоритме,
модификация или создание нового алгоритма
Декомпозиция задачи на подзадачи,
которые могут выполняться одновременно
Определение подзадач и зависимостей между ними
О.В. Сухорослов () Параллельные вычисления
03 02.03.2011 3 / 89
5. Параллельные вычисления
Использование нескольких процессоров для
Решения задачи за меньшее время
Решения бОльших задач, чем на одном процессоре
Создание параллельного алгоритма
Поиск параллелизма в последовательном алгоритме,
модификация или создание нового алгоритма
Декомпозиция задачи на подзадачи,
которые могут выполняться одновременно
Определение подзадач и зависимостей между ними
Реализация параллельной программы
Распределение подзадач между процессорами
Организация взаимодействия процессов
Учет архитектуры целевой параллельной системы
Запуск, измерение и анализ показателей эффективности
О.В. Сухорослов () Параллельные вычисления
03 02.03.2011 3 / 89
6. Многопроцессность (concurrency)
В операционных системах, серверах, GUI...
Данность: много разных процессов, асинхронность
Безопасное разделение и оптимальное использование ресурсов
между многими процессами
Акцент на пропускной способности и времени отклика
О.В. Сухорослов () Параллельные вычисления
03 02.03.2011 4 / 89
7. Многопроцессность (concurrency)
В операционных системах, серверах, GUI...
Данность: много разных процессов, асинхронность
Безопасное разделение и оптимальное использование ресурсов
между многими процессами
Акцент на пропускной способности и времени отклика
В параллельных вычислениях
Процессы надо найти внутри алгоритма, параллелизм
Изоляция процессов друг от друга не так важна
Минимизация времени выполнения одной программы
О.В. Сухорослов () Параллельные вычисления
03 02.03.2011 4 / 89
8. Режимы выполнения параллельной программы
Многозадачный режим
Режим разделения времени
Активен только один процесс
О.В. Сухорослов () Параллельные вычисления
03 02.03.2011 5 / 89
9. Режимы выполнения параллельной программы
Многозадачный режим
Режим разделения времени
Активен только один процесс
Параллельное выполнение
Многопроцессорная система
Конвейерные и векторные устройства
О.В. Сухорослов () Параллельные вычисления
03 02.03.2011 5 / 89
10. Режимы выполнения параллельной программы
Многозадачный режим
Режим разделения времени
Активен только один процесс
Параллельное выполнение
Многопроцессорная система
Конвейерные и векторные устройства
Распределенные вычисления
Несколько независимых машин
Влияние сети на скорость обмена данными
О.В. Сухорослов () Параллельные вычисления
03 02.03.2011 5 / 89
12. Классификация вычислительных систем (Flynn)
Поток команд
одиночный множественный
одиночный
Singe Instruction, Multiple Instruction,
Single Data Single Data
Поток данных
(SISD) (MISD)
множественный
Singe Instruction, Multiple Instruction,
Multiple Data Multiple Data
(SIMD) (MIMD)
О.В. Сухорослов () Параллельные вычисления
03 02.03.2011 7 / 89
13. Детализация категории MIMD
Системы с общей разделяемой памятью (мультипроцессоры)
Системы с распределенной памятью (мультикомпьютеры)
Гибридные системы
О.В. Сухорослов () Параллельные вычисления
03 02.03.2011 8 / 89
14. Общая разделяемая память
Однородный доступ к памяти (UMA)
Симметричные мультипроцессоры (SMP)
Неоднородный доступ к памяти (NUMA)
О.В. Сухорослов () Параллельные вычисления
03 02.03.2011 9 / 89
15. Общая разделяемая память
Преимущества
Привычная модель программирования
Высокая скорость обмена данными
О.В. Сухорослов () Параллельные вычисления
03 02.03.2011 10 / 89
16. Общая разделяемая память
Преимущества
Привычная модель программирования
Высокая скорость обмена данными
Проблемы
Синхронизация при доступе к общим данным
Когерентность кэшей, ложное разделение
Масштабируемость
Эффективное использование памяти в NUMA
О.В. Сухорослов () Параллельные вычисления
03 02.03.2011 10 / 89
17. Распределенная память
Процессоры (Cell)
Массивно-параллельные системы (MPP)
Кластеры
Network of workstations (NOW)
Grid
О.В. Сухорослов () Параллельные вычисления
03 02.03.2011 11 / 89
18. Распределенная память
Преимущества
Низкая стоимость
Высокая масштабируемость
Меньше проблем с синхронизацией
Декомпозиция на крупные подзадачи
О.В. Сухорослов () Параллельные вычисления
03 02.03.2011 12 / 89
19. Распределенная память
Преимущества
Низкая стоимость
Высокая масштабируемость
Меньше проблем с синхронизацией
Декомпозиция на крупные подзадачи
Проблемы
Необходимость использования сообщений
Высокие временные задержки и низкая пропускная способность
=> ограниченный круг задач, оптимизация распределения данных
и взаимодействий между процессорами
Неоднородность / Отказы узлов
О.В. Сухорослов () Параллельные вычисления
03 02.03.2011 12 / 89
21. Теоретические основы параллельных вычислений
Анализ внутренней структуры алгоритма и выявление
параллелизма
Модель параллельного алгоритма
Показатели качества параллельного алгоритма
Законы Амдала и Густафсона
О.В. Сухорослов () Параллельные вычисления
03 02.03.2011 14 / 89
22. Анализ внутренней структуры алгоритма и выявление
параллелизма
О.В. Сухорослов () Параллельные вычисления
03 02.03.2011 15 / 89
23. Представление алгоритма в виде графа
Ориентированный ациклический граф "операции – операнды"G(V,R)
V — вершины графа, соответствующие выполняемым операциям
алгоритма
R — дуги графа r(i,j), указывающие на то, что операция i
использует результат операции j
О.В. Сухорослов () Параллельные вычисления
03 02.03.2011 16 / 89
28. Цикл 1
1 for ( i =1; i < N ; i ++) {
2 for ( j =1; j < M ; j ++) {
3 A [ i ][ j ] = A [i -1][ j ] + A [ i ][ j ];
4 }
5 }
О.В. Сухорослов () Параллельные вычисления
03 02.03.2011 21 / 89
29. Цикл 1
1 for ( i =1; i < N ; i ++) {
2 for ( j =1; j < M ; j ++) {
3 A [ i ][ j ] = A [i -1][ j ] + A [ i ][ j ];
4 }
5 }
О.В. Сухорослов () Параллельные вычисления
03 02.03.2011 21 / 89
30. Цикл 2
1 for ( i =1; i < N ; i ++) {
2 for ( j =1; j < M ; j ++) {
3 A [ i ][ j ] = A [i -1][ j ] + A [ i ][ j -1];
4 }
5 }
О.В. Сухорослов () Параллельные вычисления
03 02.03.2011 22 / 89
31. Устранение зависимостей
1 i1 = 4;
2 i2 = 0;
3 for ( k = 1; k < N ; k ++) {
4 B [ i1 ++] = function1 (k ,q , r );
5 i2 += k ;
6 A [ i2 ] = function2 (k ,r , q );
7 }
О.В. Сухорослов () Параллельные вычисления
03 02.03.2011 23 / 89
32. Устранение зависимостей
1 i1 = 4;
2 i2 = 0;
3 for ( k = 1; k < N ; k ++) {
4 B [ i1 ++] = function1 (k ,q , r );
5 i2 += k ;
6 A [ i2 ] = function2 (k ,r , q );
7 }
1 i1 = 4;
2 i2 = 0;
3 for ( k = 1; k < N ; k ++) {
4 B [ k +4] = function1 (k ,q , r );
5 i2 = ( k * k + k )/2;
6 A [ i2 ] = function2 (k ,r , q );
7 }
О.В. Сухорослов () Параллельные вычисления
03 02.03.2011 23 / 89
33. Редукция
1 sum = 0;
2 max = c [0];
3 for ( i = 0; i < N ; i ++) {
4 sum += c [ i ];
5 max = ( c [ i ] > max ? c [ i ] : max );
6 }
О.В. Сухорослов () Параллельные вычисления
03 02.03.2011 24 / 89
34. "Плохие"примеры
1 for ( i = 1; i < N ; i ++)
2 a [ i ] = a [i -1] + b [ i ];
О.В. Сухорослов () Параллельные вычисления
03 02.03.2011 25 / 89
35. "Плохие"примеры
1 for ( i = 1; i < N ; i ++)
2 a [ i ] = a [i -1] + b [ i ];
1 for ( k = 5; k < N ; k ++) {
2 b [ k ] = DoSomething ( k );
3 a [ k ] = b [k -5] + MoreStuff ( k );
4 }
О.В. Сухорослов () Параллельные вычисления
03 02.03.2011 25 / 89
36. Последний пример
1 wrap = a [0] * b [0];
2 for ( i = 1; i < N ; i ++) {
3 c [ i ] = wrap ;
4 wrap = a [ i ] * b [ i ];
5 d [ i ] = 2 * wrap ;
6 }
О.В. Сухорослов () Параллельные вычисления
03 02.03.2011 26 / 89
37. Последний пример
1 wrap = a [0] * b [0];
2 for ( i = 1; i < N ; i ++) {
3 c [ i ] = wrap ;
4 wrap = a [ i ] * b [ i ];
5 d [ i ] = 2 * wrap ;
6 }
1 for ( i = 1; i < N ; i ++) {
2 wrap = a [i -1] * b [i -1];
3 c[i] = wrap ;
4 wrap = a [ i ] * b [ i ];
5 d[i] = 2 * wrap ;
6 }
О.В. Сухорослов () Параллельные вычисления
03 02.03.2011 26 / 89
38. Модель параллельного алгоритма
Модель параллельного алгоритма Ap (G , Hp ), выполняемого с
использованием p процессоров
О.В. Сухорослов () Параллельные вычисления
03 02.03.2011 27 / 89
39. Модель параллельного алгоритма
Модель параллельного алгоритма Ap (G , Hp ), выполняемого с
использованием p процессоров
Расписание Hp = {(i, Pi , ti ) : i ∈ V }
i - операция
Pi - номер процессора, выполняющего операцию
ti - время начала выполнения операции
О.В. Сухорослов () Параллельные вычисления
03 02.03.2011 27 / 89
40. Модель параллельного алгоритма
Модель параллельного алгоритма Ap (G , Hp ), выполняемого с
использованием p процессоров
Расписание Hp = {(i, Pi , ti ) : i ∈ V }
i - операция
Pi - номер процессора, выполняющего операцию
ti - время начала выполнения операции
Условия реализуемости расписания
∀i, j ∈ V : ti = tj ⇒ Pi = Pj
∀(i, j) ∈ R : tj >= ti + 1
О.В. Сухорослов () Параллельные вычисления
03 02.03.2011 27 / 89
41. Упрощающие предположения
Время выполнения любой операции = 1
Передача данных между процессорами выполняется мгновенно
О.В. Сухорослов () Параллельные вычисления
03 02.03.2011 28 / 89
42. Время выполнения последовательного алгоритма
Время выполнения для заданной вычислительной схемы
T1 (G ) = |V |
О.В. Сухорослов () Параллельные вычисления
03 02.03.2011 29 / 89
43. Время выполнения последовательного алгоритма
Время выполнения для заданной вычислительной схемы
T1 (G ) = |V |
Время выполнения последовательного алгоритма
T1 = min T1 (G )
G
О.В. Сухорослов () Параллельные вычисления
03 02.03.2011 29 / 89
44. Время выполнения последовательного алгоритма
Время выполнения для заданной вычислительной схемы
T1 (G ) = |V |
Время выполнения последовательного алгоритма
T1 = min T1 (G )
G
Время последовательного решения задачи
∗
T1 = min T1
О.В. Сухорослов () Параллельные вычисления
03 02.03.2011 29 / 89
45. Время выполнения параллельного алгоритма
Время выполнения с заданным расписанием
Tp (G , Hp ) = max(ti + 1)
i∈V
О.В. Сухорослов () Параллельные вычисления
03 02.03.2011 30 / 89
46. Время выполнения параллельного алгоритма
Время выполнения с заданным расписанием
Tp (G , Hp ) = max(ti + 1)
i∈V
Время выполнения с оптимальным расписанием
Tp (G ) = min Tp (G , Hp )
Hp
О.В. Сухорослов () Параллельные вычисления
03 02.03.2011 30 / 89
47. Время выполнения параллельного алгоритма
Время выполнения с заданным расписанием
Tp (G , Hp ) = max(ti + 1)
i∈V
Время выполнения с оптимальным расписанием
Tp (G ) = min Tp (G , Hp )
Hp
Время выполнения с наилучшей вычислительной схемой
Tp = min Tp (G )
G
О.В. Сухорослов () Параллельные вычисления
03 02.03.2011 30 / 89
48. Время выполнения параллельного алгоритма
Время выполнения с заданным расписанием
Tp (G , Hp ) = max(ti + 1)
i∈V
Время выполнения с оптимальным расписанием
Tp (G ) = min Tp (G , Hp )
Hp
Время выполнения с наилучшей вычислительной схемой
Tp = min Tp (G )
G
Минимально возможное время выполнения (неограниченный
параллелизм)
T∞ = min Tp
p>=1
T∞ (G ) = d(G )
О.В. Сухорослов () Параллельные вычисления
03 02.03.2011 30 / 89
51. Ускорение
S =p
Идеальный случай
О.В. Сухорослов () Параллельные вычисления
03 02.03.2011 32 / 89
52. Ускорение
S =p
Идеальный случай
S <p
Последовательные части алгоритма
Накладные расходы
Координация
О.В. Сухорослов () Параллельные вычисления
03 02.03.2011 32 / 89
53. Ускорение
S =p
Идеальный случай
S <p
Последовательные части алгоритма
Накладные расходы
Координация
S >p
О.В. Сухорослов () Параллельные вычисления
03 02.03.2011 32 / 89
54. Ускорение
S =p
Идеальный случай
S <p
Последовательные части алгоритма
Накладные расходы
Координация
S > p ???
О.В. Сухорослов () Параллельные вычисления
03 02.03.2011 32 / 89
55. Ускорение
S =p
Идеальный случай
S <p
Последовательные части алгоритма
Накладные расходы
Координация
S >p
Увеличение кэша и оперативной памяти
Нелинейная зависимость сложности решения задачи от объема
входных данных
Различные вычислительные схемы
О.В. Сухорослов () Параллельные вычисления
03 02.03.2011 32 / 89
56. Ускорение vs Эффективность
Показатели качества параллельного алгоритма часто являются
противоречивыми
О.В. Сухорослов () Параллельные вычисления
03 02.03.2011 33 / 89
57. Максимально достижимое ускорение (Закон Амдала)
Доля последовательных вычислений
Tseq
f =
T1
О.В. Сухорослов () Параллельные вычисления
03 02.03.2011 34 / 89
58. Максимально достижимое ускорение (Закон Амдала)
Доля последовательных вычислений
Tseq
f =
T1
Время выполнения параллельного алгоритма
(1 − f )T1
Tp = fT1 +
p
О.В. Сухорослов () Параллельные вычисления
03 02.03.2011 34 / 89
59. Максимально достижимое ускорение (Закон Амдала)
Доля последовательных вычислений
Tseq
f =
T1
Время выполнения параллельного алгоритма
(1 − f )T1
Tp = fT1 +
p
Ускорение
1
Sp =
f + 1−f
p
О.В. Сухорослов () Параллельные вычисления
03 02.03.2011 34 / 89
60. Максимально достижимое ускорение (Закон Амдала)
Доля последовательных вычислений
Tseq
f =
T1
Время выполнения параллельного алгоритма
(1 − f )T1
Tp = fT1 +
p
Ускорение
1
Sp =
f + 1−f
p
Максимально достижимое ускорение
1
lim Sp =
p→∞ f
О.В. Сухорослов () Параллельные вычисления
03 02.03.2011 34 / 89
65. "Последовательные"части программы?
Инициализация и завершение работы
Чтение входных данных и запись
О.В. Сухорослов () Параллельные вычисления
03 02.03.2011 37 / 89
66. "Последовательные"части программы?
Инициализация и завершение работы
Чтение входных данных и запись
Синхронизация, критические секции
О.В. Сухорослов () Параллельные вычисления
03 02.03.2011 37 / 89
67. "Последовательные"части программы?
Инициализация и завершение работы
Чтение входных данных и запись
Синхронизация, критические секции
Пул потоков обрабатывает независимые задания
Извлечение заданий из очереди
Обработка результатов
Запись результатов в общую структуру данных
Слияние результатов из локальных структур данных
О.В. Сухорослов () Параллельные вычисления
03 02.03.2011 37 / 89
69. Что делать?
Выбор более подходящего алгоритма
О.В. Сухорослов () Параллельные вычисления
03 02.03.2011 38 / 89
70. Что делать?
Выбор более подходящего алгоритма
Увеличение размера решаемой задачи
Эффект Амдала
Умножение матриц (I/O ∼ N 2 , вычисления ∼ N 3 )
О.В. Сухорослов () Параллельные вычисления
03 02.03.2011 38 / 89
75. Прежде чем начать
Стоит ли задача усилий?
Оптимизирован ли код?
Используется ли эффективный алгоритм?
Какие части задачи наиболее интенсивны в вычислительном
отношении?
Есть ли там параллелизм?
Есть ли готовые параллельные реализации?
О.В. Сухорослов () Параллельные вычисления
03 02.03.2011 41 / 89
76. Предисловие
Parallel algorithm design is not easily reduced to simple recipes.
Rather, it requires the sort of integrative thought that is
commonly referred to as "creativity". However, it can benefit
from a methodical approach that maximizes the range of options
considered, that provides mechanisms for evaluating alternatives,
and that reduces the cost of backtracking from bad choices.
(Foster I. Designing and Building Parallel Programs: Concepts
and Tools for Software Engineering. Reading, MA:
Addison-Wesley, 1995.)
О.В. Сухорослов () Параллельные вычисления
03 02.03.2011 42 / 89
78. Этапы разработки параллельного алгоритма
Декомпозиция на подзадачи
Анализ зависимостей и организация взаимодействия между
подзадачами
(Выбор вычислительной системы)
Масштабирование подзадач
Распределение подзадач между процессорами
О.В. Сухорослов () Параллельные вычисления
03 02.03.2011 44 / 89
79. Декомпозиция на подзадачи
Выявление возможностей для параллельного выполнения
Размер подзадач выбирается минимальным (максимально
возможное число подзадач)
Далее подзадачи могут быть укрупнены
Виды декомпозиции
По данным (domain decomposition)
Функциональная (functional decomposition)
Избегание дублирования вычислений и данных
О.В. Сухорослов () Параллельные вычисления
03 02.03.2011 45 / 89
80. Выбор структуры алгоритма
Существуют типовые структуры параллельных алгоритмов 1
Декомпозиция
По заданиям
По данным
По потокам данных
Комбинация нескольких структур
Последовательность, иерархия, композиция
1
Mattson T., Sanders B., Massingill B. Patterns for Parallel Programming.
Addison-Wesley, 2004.
О.В. Сухорослов () Параллельные вычисления
03 02.03.2011 46 / 89
81. Декомпозиция на задания
Декомпозиция
на задания
Линейная процедура Рекурсивная процедура
Task Divide and
Parallelism Conquer
О.В. Сухорослов () Параллельные вычисления
03 02.03.2011 47 / 89
82. Task Parallelism
Многовариантный счет, Монте-Карло, рендеринг
Большое количество заданий, нет зависимостей (embarassingly
parallel)
Молекулярная динамика
Вычисление сил, действующих на атом ∼ O(n ∗ N), n << N
Требуется координация ∼ O(N)
Метод "ветвей и границ"(branch and bound)
Обход и разбиение множества решений в соответствии с
правилами отсева и ветвления
Динамическое порождение заданий
Не требуется выполнение всех заданий
О.В. Сухорослов () Параллельные вычисления
03 02.03.2011 48 / 89
83. Divide and Conquer
Декомпозиция
на задания
Линейная процедура Рекурсивная процедура
Task Divide and
Parallelism Conquer
О.В. Сухорослов () Параллельные вычисления
03 02.03.2011 49 / 89
86. Особенности
Степень параллелизма изменяется в ходе выполнения алгоритма
Операции split и merge могут стать узким местом (см. закон
Амдала)
Задания порождаются динамически
Очень большое количество заданий может привести к
значительным накладным расходам
О.В. Сухорослов () Параллельные вычисления
03 02.03.2011 52 / 89
88. Геометрическая декомпозиция
Алгоритм организован вокруг структуры данных, разбитой на
набор одновременно обновляемых областей
Подзадачами являются обновления отдельных областей
структуры данных
Вычисления локализованы внутри области?
Да: независимый параллелизм, см. Task Parallelism
Нет: требуется разделение данных между областями
О.В. Сухорослов () Параллельные вычисления
03 02.03.2011 54 / 89
90. Ключевые моменты
Декомпозиция структуры данных на области
Размер подзадач обычно подбирается эмпирически
Форма области влияет на накладные расходы
Соотношение объема к площади поверхности
Дублирование соседних точек (ghost copies)
Реализация обмена данными
Перед операцией обновления
Совмещенно с операцией обновления
О.В. Сухорослов () Параллельные вычисления
03 02.03.2011 56 / 89
91. Рекурсивные данные
Декомпозиция
данных
Линейная процедура Рекурсивная процедура
Геометрическая Рекурсивные
декомпозиция данные
О.В. Сухорослов () Параллельные вычисления
03 02.03.2011 57 / 89
92. Рекурсивные данные
Алгоритм работает с рекурсивной структурой данных (список,
дерево, граф)
Часто кажется, что единственный способ решения –
последовательный обход структуры
Однако иногда возможно перестроить алгоритм так, что операции
над отдельными элементами можно выполнять одновременно
О.В. Сухорослов () Параллельные вычисления
03 02.03.2011 58 / 89
93. Конвейерная обработка
Поток
данных
Регулярный Нерегулярный
Конвейерная Координация
обработка на основе событий
О.В. Сухорослов () Параллельные вычисления
03 02.03.2011 59 / 89
94. Конвейерная обработка
Вычисления производятся над набором элементов данных,
каждый из которых проходит несколько стадий обработки
Регулярный, односторонний, стабильный поток данных
Примеры
Конвейерная обработка команд процессором
Векторно-конвейерные супекомпьютеры
Обработка сигналов, фильтры, графика, реализация в железе
Unix pipes
О.В. Сухорослов () Параллельные вычисления
03 02.03.2011 60 / 89
96. Подзадачи
Применение операции "стадия N"к каждому элементу данных
1 initialize
2 while ( more data ) {
3 receive data element from previous stage
4 perform operation on data element
5 send data element to next stage
6 } finalize
Ограничения на порядок применения стадий определяют
зависимости между заданиями
О.В. Сухорослов () Параллельные вычисления
03 02.03.2011 62 / 89
97. Особенности
Параллелизм ограничен числом стадий
В идеале времена работы каждой стадии должны быть
одинаковыми
Самая медленная стадия становится узким местом
Комбинирование и декомпозиция стадий
Распараллеливание медленной стадии
Работает лучше, если времена заполнения и опустошения
конвейера гораздо меньше полного времени работы
О.В. Сухорослов () Параллельные вычисления
03 02.03.2011 63 / 89
98. Координация на основе событий
Поток
данных
Регулярный Нерегулярный
Конвейерная Координация
обработка на основе событий
О.В. Сухорослов () Параллельные вычисления
03 02.03.2011 64 / 89
99. Координация на основе событий
Декомпозиция на слабозависимые компоненты,
взаимодействующие нерегулярным образом
Ср. с конвейером
Не обязательно линейная структура
Двусторонние потоки данных
Нерегулярные, непредсказуемые взаимодействия
Примеры
Моделирование с дискретными событиями
Координация между заданиями в других шаблонах
Actors, распределенные системы...
О.В. Сухорослов () Параллельные вычисления
03 02.03.2011 65 / 89
100. Задания
Прием, обработка и отправка событий для отдельного компонента
1 initialize
2 while ( not done ){
3 receive event
4 process event
5 send events
6 } finalize
Задания взаимодействуют через генерацию, отправку и обработку
событий
О.В. Сухорослов () Параллельные вычисления
03 02.03.2011 66 / 89
101. Особенности
Сохранение порядка событий
Высокий риск возникновения взаимной блокировки
Нерегулярность усложняет распределение заданий по
исполнителям
О.В. Сухорослов () Параллельные вычисления
03 02.03.2011 67 / 89
102. Этапы разработки параллельного алгоритма
Декомпозиция на подзадачи
Анализ зависимостей и организация взаимодействия между
подзадачами
(Выбор вычислительной системы)
Масштабирование подзадач
Распределение подзадач между процессорами
О.В. Сухорослов () Параллельные вычисления
03 02.03.2011 68 / 89
103. Декомпозиция на подзадачи
Контрольные вопросы
Превосходит ли количество подзадач число процессоров в
целевой системе как минимум на порядок?
Не приводит ли декомпозиция к дублированию вычислений и
увеличению требований к хранению данных?
Имеют ли подзадачи сопоставимый размер?
Увеличивается ли количество подзадач с ростом размера задачи?
Определено ли несколько альтернативных схем декомпозиции?
О.В. Сухорослов () Параллельные вычисления
03 02.03.2011 69 / 89
104. Организация взаимодействия между подзадачами
Выделение информационных зависимостей между подзадачами
=> операции взаимодействия
Граф «подзадачи-каналы-сообщения»
Минимизация числа каналов и операций взаимодействия
Распределение операций взаимодействий между процессами, с
возможностью их параллельного выполнения
О.В. Сухорослов () Параллельные вычисления
03 02.03.2011 70 / 89
105. Виды взаимодействий
Локальные и глобальные
Структурированные и неструктурированные
Статические и динамические
Синхронные и асинхронные
О.В. Сухорослов () Параллельные вычисления
03 02.03.2011 71 / 89
107. Глобальные взаимодействия
Редукция
Централизованное решение
Распределенное решение
Divide and Conquer
О.В. Сухорослов () Параллельные вычисления
03 02.03.2011 73 / 89
108. Организация взаимодействия между подзадачами
Контрольные вопросы
Является ли одинаковой интенсивность взаимодействий для всех
подзадач?
Взаимодействует ли каждая подзадача только с небольшим
числом «соседей» (локальность)?
Могут ли операции взаимодействия выполняться одновременно?
Не препятствует ли выбранная схема взаимодействия
параллельному выполнению подзадач?
О.В. Сухорослов () Параллельные вычисления
03 02.03.2011 74 / 89
109. Выбор вычислительной системы
Соблюдение баланса между
Абстрактностью и переносимостью алгоритма
Эффективностью для целевой платформы
На ранних стадиях разработки параллельного алгоритма лучше
избегать тесной привязки к конкретной платформе
Алгоритм хорошо работает на целевой платформе
Алгоритм достаточно гибок для того, чтобы его можно было
адаптировать под другие платформы и архитектуры
О.В. Сухорослов () Параллельные вычисления
03 02.03.2011 75 / 89
110. Выбор вычислительной системы
Количество процессоров P
Можно подобрать P одинаковых подзадач
Можно подобрать N >> P подзадач
Обмен данными между процессорами
Большой объем общих данных или интенсивные обмены данными
=> общая память, SMP
Группировка подзадач по процессорам
Соотношение между временами вычислений и обмена данными
(синхронизации)
Зависит от размера подзадачи и характеристик платформы
О.В. Сухорослов () Параллельные вычисления
03 02.03.2011 76 / 89
111. Масштабирование подзадач
Адаптация алгоритма для эффективного выполнения на целевой
системе
Учет доступного количества процессоров
Уменьшение накладных расходов на взаимодействие, создание
подзадач...
Укрупнение (агломерация) подзадач
Какое количество подзадач выбрать?
Репликация данных и вычислений
О.В. Сухорослов () Параллельные вычисления
03 02.03.2011 77 / 89
114. Пример
Суммирование N чисел
Вычисленная сумма должна оказаться на каждой подзадаче
(процессе)
О.В. Сухорослов () Параллельные вычисления
03 02.03.2011 80 / 89
115. Гибкость
Отсутствие ограничений на количество подзадач
Возможность легко увеличивать и уменьшать количество
подзадач
Возможность автоматически изменять число подзадач в
зависимости от количества процессоров
О.В. Сухорослов () Параллельные вычисления
03 02.03.2011 81 / 89
116. Масштабирование подзадач
Контрольные вопросы
Уменьшились ли расходы на взаимодействия в результате
увеличения локальности вычислений?
Перевешивают ли преимущества от дублирования вычислений
дополнительные расходы? (для задач разного размера и разного
кол-ва процессоров)
Не ограничивает ли дублирование данных масштабируемость
алгоритма?
Имеют ли полученные подзадачи одинаковую вычислительную и
коммуникационную сложность?
Масштабируется ли по-прежнему количество подзадач с ростом
размера задачи?
Достаточно ли имеющегося в алгоритме параллелизма для
текущей и будущих систем?
Может ли количество подзадач быть далее уменьшено без
нежелательных последствий?
О.В. Сухорослов () Параллельные вычисления
03 02.03.2011 82 / 89
117. Признаки хорошего алгоритма
Возможность варьировать число и размер подзадач =>
параметризация подзадач
Подзадачи должны быть достаточно крупными, чтобы
компенсировать накладные расходы
Подзадачи должны быть достаточно независимыми, чтобы
координация не стала узким местом
Время обработки подзадач должно быть примерно одинаковым
для лучшей балансировки нагрузки
О.В. Сухорослов () Параллельные вычисления
03 02.03.2011 83 / 89
118. Распределение подзадач между процессорами
Минимизация времени выполнения алгоритма
Размещение подзадач, которые могут выполняться одновременно,
на разных процессорах
Размещение подзадач, которые часто взаимодействуют, на одном
процессоре
Равномерная загрузка процессоров
NP-полная задача
Стратегии и эвристики
О.В. Сухорослов () Параллельные вычисления
03 02.03.2011 84 / 89
119. Статическое планирование (тривиальное)
Подзадачи одинакового размера
Фиксированное число подзадач
Структурированные локальные и глобальные взаимодействия
Фиксированное число процессоров
Однородная система
Гетерогенная система
О.В. Сухорослов () Параллельные вычисления
03 02.03.2011 85 / 89
121. Статическое планирование с балансировкой нагрузки
Подзадачи различного размера
Неструктурированные взаимодействия
Число подзадач >> числа процессоров
Случайное распределение
Циклическая схема
О.В. Сухорослов () Параллельные вычисления
03 02.03.2011 87 / 89
122. Динамическое планирование с балансировкой нагрузки
Динамически изменяются во время выполнения алгоритма
Число подзадач
Вычислительная и коммуникационная сложность подзадач
Состав процессоров
Типичные стратегии
Общая очередь заданий (master-worker)
Децентрализованная схема (work stealing)
Миграция вычислений
О.В. Сухорослов () Параллельные вычисления
03 02.03.2011 88 / 89
123. Распределение подзадач между процессорами
Контрольные вопросы
Существует ли необходимость динамической балансировки
вычислений?
Не станет ли мастер узким местом при централизованной схеме
балансировки нагрузки?
Произведена ли оценка относительной сложности различных
стратегий при динамической балансировке нагрузки?
Имеется ли достаточно большое число подзадач при
использовании случайной или циклической схем статической
балансировки?
О.В. Сухорослов () Параллельные вычисления
03 02.03.2011 89 / 89