
- •Основные архитектуры параллельных компьютеров
- •Классификация архитектур вычислительных систем. (Классификация Флинна)
- •Модели параллельного программирования. Основные свойства параллельных алгоритмов
- •Модель задача-канал. Основные свойства модели "задача/канал"
- •Модель передачи сообщений
- •Модель параллелизма данных
- •Модель разделяемой памяти
- •Понятие о детерминизме программы
- •Модульность. Виды композиции модулей и/или программ
- •10. Пример параллельного алгоритма: конечные разности.
- •11. Основные этапы разработки параллельной программы.
- •12. Декомпозиция. Цели. Виды декомпозиции. Итоги этапа декомпозиции.
- •Д екомпозиция по данным
- •Ф ункциональная декомпозиция
- •13. Коммуникация. Виды коммуникаций: локальные, глобальные,динамические, асинхронные. Распределенные коммуникации ивычисления. Итоги.
- •Локальные/глобальные.
- •Синхронные/асинхронные.
- •Статические/динамические.
- •С труктурные/неструктурные.
- •16. Анализ эффективности параллельных алгоритмов. Система показателей оценки характеристик параллельной программы. Асимптотический анализ. Эффективность параллельной программы
- •Система показателей оценки характеристик
- •Соглашения о терминах
- •Принятая в mpi нотация записи
- •23. Базовые функции mpi (минимальный набор)
- •24. Библиотека mpi. Организация приема/передачи данных между отдельными процессами
- •Функции приема/передачи сообщений с блокировкой
- •Основные функции приема/передачи сообщений без блокировки
- •Совмещенные прием/передача сообщений
- •25. Библиотека mpi. Коллективные функции
- •Функции коллективного обмена данными
- •26. Библиотека mpi. Глобальные вычислительные операции над распределенными данными
- •27. Библиотека mpi. Обеспечение модульности. Коммуникаторы, группы и области связи
- •Два взаимосвязанных механизма:
- •Основные понятия (группа):
- •Основные понятия (коммуникатор):
- •28. Библиотека mpi. Проблемы использования различных типов данных. Пользовательские типы данных
- •Пользовательские типы данных:
- •Характеристики типов:
- •29. Библиотека mpi. Производные типы данных и передача упакованных данных
- •Механизмы эффективной пересылки данные разных типов:
- •Производные типы данных:
- •Характеристики типов:
- •Передача упакованных данных:
- •Технология OpenMp. Стратегия подхода.
- •Директивы OpenMp. Формат записи директив.
- •Директивы OpenMp. Области видимости директив. Типы директив.
- •Директивы OpenMp. Определение параллельной области.
- •Директивы OpenMp. Распределение вычислений по потокам.
- •Директивы OpenMp. Синхронизация.
- •Директивы OpenMp. Управление областью видимости данных.
- •37. Библиотека функций OpenMp. Функции контроля параметров среды исполнения.
- •38. Библиотека функций OpenMp. Функции синхронизации.
- •39. Технология OpenMp. Переменные среды исполнения.
Оглавление
2. Классификация архитектур вычислительных систем. (Классификация Флинна) 7
3. Модели параллельного программирования. Основные свойства параллельных алгоритмов 9
4. Модель задача-канал. Основные свойства модели "задача/канал" 10
5. Модель передачи сообщений 11
6. Модель параллелизма данных 12
7. Модель разделяемой памяти 13
8. Понятие о детерминизме программы 14
9. Модульность. Виды композиции модулей и/или программ 15
10. Пример параллельного алгоритма: конечные разности. 16
11. Основные этапы разработки параллельной программы. 17
12. Декомпозиция. Цели. Виды декомпозиции. Итоги этапа декомпозиции. 18
13. Коммуникация. Виды коммуникаций: локальные, глобальные,динамические, асинхронные. Распределенные коммуникации ивычисления. Итоги. 19
14. Интеграция. Цели интеграции. Укрупнение детализации. Репликация вычислений. Итоги. 22
Цели интеграции 22
Критические проблемы этапа 22
Уменьшение коммуникационных издержек 22
Укрупнение детализации 22
Примеры укрупнения 22
Пример двумерной задачи 22
Следствие эффектов «поверхность / объем» 23
Пример двумерной проблемы 23
сетка 8´8 23
(a) 8´8=64 задач, 64´4=256 связей 23
256 значений данных 23
(b) 2´2=4 задачи, 4´4=16 связей 23
16´4=64 значений данных 23
Репликация вычислений 23
Сохранение гибкости 24
Сокращение стоимости разработки ПО 24
Итоги 24
15. Отображение. Цели отображения. Основные стратегии. Итоги. 25
Основная цель этапа 25
Стратегии достижения цели 25
Стратегия для 25
Прямое (простое) отображение 25
Стратегия для 25
Алгоритмы сбалансированной загрузки 25
Стратегия для 26
Динамическая стратегия сбалансированной загрузки 26
Стратегия для 26
Алгоритмы сбалансированной загрузки 26
Алгоритм планировщика задач 26
Итоги 26
16. Анализ эффективности параллельных алгоритмов. Система показателей оценки характеристик параллельной программы. Асимптотический анализ. 28
Эффективность параллельной программы 28
Система показателей оценки характеристик 28
Экстраполяция по результатам наблюдения 28
Асимптотический анализ 28
Недостатки асимптотического анализа 28
17. Анализ эффективности параллельных алгоритмов. Модель производительности. Снижение сложности модели. 29
Модель производительности 29
Снижение сложности модели 29
Время вычислений - 29
Время коммуникаций - 29
Idle Time 30
22. Краткая характеристика библиотеки MPI 30
Основные характеристики 30
Соглашения о терминах 30
Принятая в MPI нотация записи 31
23. Базовые функции MPI (минимальный набор) 32
24. Библиотека MPI. Организация приема/передачи данных между отдельными процессами 33
Функции приема/передачи сообщений с блокировкой 33
Основные функции приема/передачи сообщений без блокировки 33
Совмещенные прием/передача сообщений 34
25. Библиотека MPI. Коллективные функции 35
Функции коллективного обмена данными 35
26. Библиотека MPI. Глобальные вычислительные операции над распределенными данными 37
27. Библиотека MPI. Обеспечение модульности. Коммуникаторы, группы и области связи 38
Два взаимосвязанных механизма: 38
Основные понятия (группа): 38
Основные понятия (коммуникатор): 38
28. Библиотека MPI. Проблемы использования различных типов данных. Пользовательские типы данных 39
Пользовательские типы данных: 39
Характеристики типов: 39
29. Библиотека MPI. Производные типы данных и передача упакованных данных 41
Механизмы эффективной пересылки данные разных типов: 41
Производные типы данных: 41
Характеристики типов: 41
Передача упакованных данных: 41
30. Технология OpenMP. Стратегия подхода. 42
31. Директивы OpenMP. Формат записи директив. 43
32. Директивы OpenMP. Области видимости директив. Типы директив. 44
33. Директивы OpenMP. Определение параллельной области. 45
34. Директивы OpenMP. Распределение вычислений по потокам. 46
35. Директивы OpenMP. Синхронизация. 48
36. Директивы OpenMP. Управление областью видимости данных. 49
37. Библиотека функций OpenMP. Функции контроля параметров среды исполнения. 50
38. Библиотека функций OpenMP. Функции синхронизации. 52
39. Технология OpenMP. Переменные среды исполнения. 55
Основные архитектуры параллельных компьютеров
Параллелизм – направление развития вычислительной техники, целью которого является повышение ее производительности.
Пути достижения параллелизма:
независимость функционирования отдельных устройств компьютеров;
избыточность элементов вычислительной системы (использование специализированных устройств и дублирование);
конвейерная реализация обрабатывающих устройств.
Сдерживающие факторы развития:
высокая стоимость параллельных вычислительных систем (суперкомпьютеров);
необходимость обобщения последовательных программ;
потери производительности при организации параллелизма (гипотеза Минского);
постоянное совершенствование последовательных компьютеров;
последовательность большинства вычислительных алгоритмов (закон Амдала);
зависимость эффективности параллелизма от учета архитектуры параллельных систем.
Основные архитектуры
1. Симметричные мультипроцессорные системы SMP-системы.
Архитектура: cистема состоит из нескольких однородных процессоров и массива общей памяти (обычно из нескольких независимых блоков). Все процессоры имеют доступ к любой точке памяти с одинаковой скоростью. Процессоры подключены к памяти либо с помощью общей шины (базовые 2-4 процессорные SMP-сервера), либо с помощью crossbar-коммутатора (HP 9000). Аппаратно поддерживается когерентность кэшей.
Масштабируемость: наличие общей памяти сильно упрощает взаимодействие процессоров между собой, однако накладывает сильные ограничения на их число – не более 32 в реальных системах. Для построения масштабируемых систем на базе SMP используются кластерные или NUMA-архитектуры.
Операционная система: вся система работает под управлением единой ОС (обычно UNIX-подобной). ОС автоматически (в процессе работы) распределяет процессы/нити по процессорам (scheduling), но иногда возможна и явная привязка.
Модель программирования: программирование в модели общей памяти. (POSIX threads, OpenMP). Для SMP-систем существуют сравнительно эффективные средства автоматического распараллеливания.
2. Укрупненно-распараллеленные системы (МРР-системы)
Архитектура: система состоит из однородных вычислительных узлов, включающих: один или несколько центральных процессоров локальную память (прямой доступ к памяти других узлов невозможен) коммуникационный процессор или сетевой адаптер иногда - жесткие диски (как в SP) и/или другие устройства В/В. К системе могут быть добавлены специальные узлы ввода-вывода и управляющие узлы. Узлы связаны через некоторую коммуникационную среду (высокоскоростная сеть, коммутатор и т.п.)
Масштабируемость: общее число процессоров в реальных системах достигает нескольких тысяч (ASCI Red, Blue Mountain).
Операционная система: существуют два основных варианта: полноценная ОС работает только на управляющей машине (front-end), на каждом узле работает сильно урезанный вариант ОС, обеспечивающие только работу расположенной в нем ветви параллельного приложения. Пример: Cray T3E. На каждом узле работает полноценная UNIX-подобная ОС (вариант, близкий к кластерному подходу). Пример: IBM RS/6000 SP + ОС AIX, устанавливаемая отдельно на каждом узле.
Модель программирования: программирование в рамках модели передачи сообщений (MPI, PVM, BSPlib).
3. Системы с неоднородным доступом к памяти (NUMA)
Архитектура: система состоит из однородных базовых модулей (плат), состоящих из небольшого числа процессоров и блока памяти. Модули объединены с помощью высокоскоростного коммутатора. Поддерживается единое адресное пространство, аппаратно поддерживается доступ к удаленной памяти, т.е. к памяти других модулей. При этом, доступ к локальной памяти в несколько раз быстрее, чем к удаленной.
Масштабируемость: масштабируемость NUMA-систем ограничивается объемом адресного пространства возможностями аппаратуры поддержки когерентности кэшей возможностями операционной системы по управлению большим числом процессоров. На настоящий момент, максимальное число процессоров в NUMA-системах составляет 256.
Операционная система: обычно вся система работает под управлением единой ОС, как в SMP. Но возможны также варианты динамического "подразделения" системы, когда отдельные "разделы" системы работают под управлением разных ОС (например, Windows и UNIX в NUMA-Q 2000).
Модель программирования: аналогична SMP.
4. Параллельные векторные системы PVP-системы
Архитектура: основным признаком PVP-систем является наличие специальных векторно-конвейерных процессоров, в которых предусмотрены команды однотипной обработки векторов независимых данных, эффективно выполняющиеся на конвейерных функциональных устройствах. Как правило, несколько таких процессоров (1-16) работают одновременно над общей памятью (аналогично SMP) в рамках многопроцессорных конфигураций. Несколько таких узлов могут быть объединены с помощью коммутатора (аналогично MPP).
Модель программирования: эффективное программирование подразумевает векторизацию циклов (для достижения разумной производительности одного процессора) и их распараллеливание (для одновременной загрузки нескольких процессоров одним приложением).
5. Кластерные системы
Архитектура: набор рабочих станций (или даже ПК) общего назначения, используется в качестве дешевого варианта укрупненно-распараллеленного компьютера. Для связи узлов используется одна из стандартных сетевых технологий (Fast/Gigabit Ethernet, Myrinet) на базе шинной архитектуры или коммутатора. Гетерогенные (неоднородные) кластеры.
Операционная система: используются стандартные для рабочих станций ОС, чаще всего, свободно распространяемые - Linux/FreeBSD, вместе со специальными средствами поддержки параллельного программирования и распределения нагрузки.
Модель программирования: программирование, как правило, в рамках модели передачи сообщений (чаще всего MPI). Дешевизна подобных систем оборачивается большими накладными расходами на взаимодействие параллельных процессов между собой, что сильно сужает потенциальный класс решаемых задач.