Слайд 12. Моделирование и анализ параллельных вычислений.
Коммуникационная трудоемкость параллельных алгоритмов
для
кластеров (l = 1).
Основной способ выполнения коммуникационных операций –
пакетный
метод
Слайд 2Оценка трудоемкости операции передачи данных между 2 узлами кластера
Подход
1:
tн не зависит от объема данных,
tс не зависит от числа
пакетов
tпд = tн + mtк + tс
Ограничения не соответствуют действительности ?
Оценка времени (трудоемкости) неточна
Слайд 3Оценка трудоемкости операции передачи данных между 2 узлами кластера
Подход
2:
Учитывается
n - число пакетов, n = m/(Vmax – Vc)
Vc - объем служебных данных в каждом пакете,
Vmax - максимально возможный для сети размер пакета,
tнач0 – аппаратная (сетевая) задержка (латентность),
tнач1 – время подготовки к передаче в сети 1 байта.
Слайд 4Оценка трудоемкости операции передачи данных между 2 узлами кластера
Предполагается
Подготовка
данных для 2,3, … пакетов совмещена с пересылкой
предшествующих пакетов.
Учитывается
увеличение объема передаваемой информации за счет добавления служебных данных
(заголовков пакетов)
Слайд 5Оценка трудоемкости операции передачи данных между 2 узлами кластера
Подход
2 – итоговое соотношение
Слайд 6Оценка трудоемкости операции передачи данных между 2 узлами кластера
Подход
3 (упрощение подхода 1) – модель Хокни (R.W. Hocney, 1994)
– используется для грубых оценок трудоемкости
tпд = tн + mtк = tн + m/R
Оценки через вычислительные эксперименты на кластере:
tн - время передачи сообщения длины 0 для подходов 1 и 3,
tнач0 , tнач1 для подхода 2 - можно оценить через аппроксимацию
tпд - времени передачи сообщений размером от 0 до Vmax
R = max (tпд / m) при варьировании m
Слайд 7Этапы разработки параллельных алгоритмов (распараллеливания)
1. Анализ общей схемы вычислений -
для разделения на независимые (относительно) подзадачи.
2. Определение информационных взаимодействий между
подзадачами.
3. Масштабирование алгоритма с учетом числа CPU (укрупнение или детализация подзадач).
4. Распределение подзадач между CPU системы
Примечание. Это общий подход, независимо от типа вычислительной системы, исходной задачи и метода решения.
Слайд 8Дополнительные предположения
Равномерность загрузки всех CPU (балансировка).
Минимизация коммуникационных взаимодействий между подзадачами.
Возможность
пересмотра шагов после анализа показателей производительности.
Информационные взаимодействия:
Передача сообщений
для МВС
с распределенной памятью.
Операции доступа к общим переменным
для МВС с общей памятью
Слайд 9Этап 1 разработки параллельных алгоритмов
1. Разделение вычислений
на
независимые подзадачи
Требования к подзадачам:
Равные объемы вычислений
Минимум информационных зависимостей
Меньше передач данных
Больше
объем сообщений
Слайд 10Два основных типа вычислительных схем, основанных на разделении данных:
Ленточная
схема Блочная схема
Слайд 11Сфера применимости – однотипная обработка большого набора данных:
Матричные вычисления
Численные методы
решения уравнений в частных производных.
Имеет место параллелизм по данным ?
Разделение
на подзадачи =
разделение данных.
Возможны 1,2,3D наборы подзадач с информационными связями между ближайшими соседями – сетки, или решетки.
Слайд 13Выполнение разных операций над одним набором данных –
функциональный параллелизм
Обработка
разных запросов к БД
Одновременное выполнение разных алгоритмов для одних и
тех же данных
Функциональная декомпозиция м.б. использована для конвейерной обработки данных:
Ввод
Обработка
Сохранение
Слайд 14Этап 2 разработки параллельных алгоритмов
2. Выделение информационных зависимостей
Взаимосвязан с этапом
1:
Выделение подзадач должно учитывать возможные информационные связи
Анализ объема информационных обменов
может потребовать изменения декомпозиции
Слайд 15Формы информационного взаимодействия
Схемы передачи данных:
Локальные – обмен для части подзадач
(как правило, на соседних CPU).
Глобальные - обмен между всеми подзадачами.
Структурированные
– стандартные регулярные схемы (кольцо, решетка и т.д.).
Произвольные .
Статические – фиксируются при проектировании программы вычислений
Динамические – определяются во время выполнения программы (run-time)
Слайд 16Формы информационного взаимодействия
Схемы передачи данных:
Синхронные –
операции передачи данных
начинают
выполняться только при готовности всех участников,
завершаются только по окончанию всех
обменов
Просты для применения
Асинхронные – участники могут не ждать других
для начала и завершения обменов
Снижают временные задержки
Слайд 17Этап 3 разработки параллельных алгоритмов
3. Масштабирование
Необходимо, если
число подзадач ≠
количеству CPU
Типы масштабирования:
Агрегация
Декомпозиция
Слайд 18Агрегация
Укрупнение вычислений для уменьшения числа подзадач.
В результате должно соблюдаться
(см.
этап 1) :
Одинаковая вычислительная сложность подзадач.
Минимально возможный уровень объема и
интенсивности информационных взаимодействий между подзадачами
?
В первую очередь объединяют коммуникационно трудоемкие подзадачи
Слайд 19Декомпозиция
Детализация вычислений (увеличение числа подзадач) для загрузки всех доступных CPU.
Декомпозиция
выполняется до базовых задач –
с известными параллельными алгоритмами решения
Слайд 20Этап 4 разработки параллельных алгоритмов
4. Распределение подзадач между CPU.
Необходимо
для МВС с распределенной памятью.
Не требуется, если
1) число подзадач =
количеству CPU
2) все CPU связаны напрямую (полный граф)
3) система с общей памятью – распределение выполняется автоматически ОС.
Слайд 21Практические рекомендации
Анализируем задачу для выделения подзадач, которые могут выполняться одновременно
Изменяем
структуру задачи для эффективного выполнения подзадач:
найти зависимости между подзадачами,
организовать исходный
код для эффективного управления.
Реализуем параллельный алгоритм в исходном коде с помощью технологий параллельного программирования
Слайд 22Технологии параллельного программирования
В основе может быть:
Язык параллельного программирования.
Прикладной программный интерфейс
(API), реализованный с помощью библиотечного интерфейса.
Расширение языка последовательного программирования
Слайд 23Примеры технологий ПП
OpenMP: директивы компилятора для простого параллельного программирования.
MPI: библиотечные
подпрограммы для реализации высокоэффективной переносимости.
Java: параллельность заложена в языке программирования
на основе встроенных типов данных.
Слайд 243. Основы технологии OpenMP.
Модель «fork-join».
Классификация переменных.
Основные директивы
и их опции.
Распараллеливание по данным и по операциям.
Решение
проблемы синхронизации.
Слайд 25 Технология разработки параллельных программ для МВС с общей памятью (OpenMP)
OpenMP (Open
Multi-Processing) —
открытый развивающийся стандарт для распараллеливания программ на языках С, С++, Fortran,
включает
описание
директив компилятора,
библиотечных процедур,
переменных ОС,
для программирования многопоточных приложений для МВС с общей памятью (имеется версия и для кластеров).
Наиболее популярная задача OpenMP — написание программ, ориентированных на циклы
Слайд 26Модель программирования OpenMP
Разветвление-объединение (fork-join)
Работа программы начинается с одного (корневого) потока,
или нити (thread – нить, тред).
Для добавления в программу
параллелизма выполняется разветвление на несколько потоков,
чтобы создать группу потоков.
Потоки группы выполняются параллельно в рамках фрагмента кода, т.наз. параллельного участка.
В конце параллельного участка все потоки заканчивают свою работу и снова объединяются вместе.
После этого корневой поток продолжает выполняться
до тех пор, пока не начнется следующий параллельный участок (или не наступит конец программы).