
- •Основные архитектуры параллельных компьютеров
- •Классификация архитектур вычислительных систем. (Классификация Флинна)
- •Модели параллельного программирования. Основные свойства параллельных алгоритмов
- •Модель задача-канал. Основные свойства модели "задача/канал"
- •Модель передачи сообщений
- •Модель параллелизма данных
- •Модель разделяемой памяти
- •Понятие о детерминизме программы
- •Модульность. Виды композиции модулей и/или программ
- •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 к всем элементам этой таблицы» или «увеличивается оклад всех служащих со стажем свыше 5 лет»
Программа с параллелизмом данных состоит из последовательности таких операций
Компиляторы, использующие параллелизм данных, часто требуют, чтобы программист явно указал распределение данных по процессорам.
Модель разделяемой памяти
Задачи разделяют общее адресное пространство, чтение и запись в него выполняется асинхронно.
Для управления доступом к общей памяти могут использоваться различные механизмы типа блокировок и семафоров.
Преимущество этой модели с точки зрения программиста – отсутствует понятие «собственника» данных, и, следовательно, нет необходимости явно указывать способ передачи данных от производителей потребителям. Это упрощает разработку программы.
Понимание и управление локализацией данных более сложное.
Разработка детерминированных программ затруднена.
Понятие о детерминизме программы
Детерминизм – предсказуемое поведение программы в процессе ее исполнения.
Параллельная программа может давать разные результаты при повторных запусках даже без модификации кода и исходных данных. Это является следствием «гонок за данными» - одновременного и асинхронного доступа разных процессов или потоков к общим переменным
Хотя недетерминизм иногда является полезным и его стараются поддерживать, для параллельного программирования желательно выполнение условия детерминизма программы. Детерминированные программы просты для понимания. Например, отследить корректность программы проще по результату одного исполнения, чем по множеству всех возможных
Модульность. Виды композиции модулей и/или программ
Модульность (modularity) – возможность декомпозиции сложных программ на простые компоненты:
Процедуры
Структуры данных
ОО-конструкции
т.п.
Программы часто создаются как набор отдельных частей, взаимодействующих друг с другом для получения нужного результата. Программа может представлять собой единую сложную структуру, выполняющую несколько функций с помощью различных частей программы. Однако более простым решением является создание нескольких модулей, которые совместно используют системные ресурсы, но выполняют каждый свою функцию.
В программе, состоящей из нескольких модулей, каждый модуль имеет собственное назначение и выполняет отдельный набор действий. Эти модули независимы друг от друга, они взаимодействуют только при передаче информации. При этом для обеспечения целостности данных необходимо синхронизировать работу модулей.
10. Пример параллельного алгоритма: конечные разности.
Параллельный алгоритм для конечно-разностной задачи. Дан вектор X где N=8. Весь пример разделён на 8 подзадач (далее просто задачи), каждая из которых инкапсулирует только свои данные и взаимодействует с соседями слева и справа через каналы. В структуре каждой задачи есть два входных и выходных порта. (Термин «задача» - обобщающий и используется потому, что это может быть как отдельный узел (процессор), так и просто поток в рамках одного узла).
Дано
на каждой задаче. Найти
на каждой задаче.
Параллельный
алгоритм для данного примера подразумевает
создание N
задач, по одной на каждую точку
в векторе
.
Начальное условие
примера разделено между всеми задачами:
в i-ой
задаче дано
и она отвечает за вычисление значений
в течение всех шагов T.
Поэтому на каждом шаге t
для вычисления очередного значения
данная задача должна получить числа
и
от своих соседей слева (i-1)
и справа (i+1)
соответственно, как показано на рисунке
выше. Для этого каждая задача (кроме
0-ой
и (N-1)-ой,
потому что для них новые значения по
времени вычисляются из граничных условий
– курс ЧМ©) делает следующие действия:
Посылает своё текущее значение соседу слева и справа;
Получает значения и от левого и правого соседа;
Использует полученные значения для вычисления
по формуле выше.