- •В.П. Гергель, р.Г. Стронгин Основы параллельных вычислений для многопроцессорных вычислительных систем
- •1. Принципы построения параллельных вычислительных систем
- •2. Моделирование и анализ параллельных вычислений
- •3. Оценка коммуникационной трудоемкости параллельных алгоритмов
- •4. Параллельные численные алгоритмы для решения типовых задач вычислительной математики
- •5. Модели функционирования параллельных программ
- •6. Учебно-практическая задача: Решение дифференциальных уравнений в частных производных
- •Введение
- •"Многопроцессорные системы и параллельное программирование"
- •1. Цели и задачи курса
- •1. Цель преподавания курса
- •2. Задачи курса
- •3. Дисциплины, изучение которых необходимо при освоении данного курса
- •2. Принципы построения параллельных вычислительных систем
- •4. Принципы разработки параллельных алгоритмов и программ
- •6. Параллельные численные алгоритмы для решения типовых задач вычислительной математики
- •Часть 2. Методы параллельного программирования для вычислительных систем с общей памятью
- •8. Практикум по использованию библиотек параллельных методов для решения сложных научно-технических задач - 4 часа
- •9. Практикум по методам параллельных вычислений для решения задач многомерной многоэкстремальной оптимизации -4 часа
- •Учебно-методические материалы по дисциплине Основная литература
- •Дополнительная литература
- •Учебно-методические пособия
- •Информационные ресурсы сети Интернет
- •1. Принципы построения параллельных вычислительных систем
- •1.1. Пути достижения параллелизма
- •1.2. Классификация вычислительных систем
- •1.3. Характеристика типовых схем коммуникации в многопроцессорных вычислительных системах
- •1.4. Высокопроизводительный вычислительный кластер ннгу
- •4. Параллельные численные методы для решения типовых задач вычислительной математики
- •4.1. Вычисление частных сумм последовательности числовых значений
- •Последовательный алгоритм суммирования
- •Каскадная схема суммирования
- •Модифицированная каскадная схема
- •Вычисление всех частных сумм
- •4.2. Умножение матрицы на вектор
- •Достижение максимально возможного быстродействия ()
- •Использование параллелизма среднего уровня ()
- •Организация параллельных вычислений при
- •Использование ограниченного набора процессоров ()
- •4.3. Матричное умножение
- •Макрооперационный анализ алгоритмов решения задач
- •Организация параллелизма на основе разделения данных
- •4.4. Сортировка
- •Параллельное обобщение базовой операции сортировки
- •Пузырьковая сортировка
- •Сортировка Шелла
- •Быстрая сортировка
- •4.5. Обработка графов
- •Нахождение минимально охватывающего дерева
- •Поиск кратчайших путей
- •6. Учебно-практическая задача: Решение дифференциальных уравнений в частных производных
- •6.1. Последовательные методы решения задачи Дирихле
- •6.2. Организация параллельных вычислений для систем с общей памятью
- •Использование OpenMp для организации параллелизма
- •Проблема синхронизации параллельных вычислений
- •Возможность неоднозначности вычислений в параллельных программах
- •Проблема взаимоблокировки
- •Исключение неоднозначности вычислений
- •Волновые схемы параллельных вычислений
- •Балансировка вычислительной нагрузки процессоров
- •6.3. Организация параллельных вычислений для систем с распределенной памятью
- •Разделение данных
- •Обмен информацией между процессорами
- •Коллективные операции обмена информацией
- •Организация волны вычислений
- •Блочная схема разделения данных
- •Оценка трудоемкости операций передачи данных
Организация параллельных вычислений при
1.
Выбор параллельного способа вычислений.
При использовании
процессоров
для умножения матрицы
на вектор
может быть использован ранее уже
рассмотренный в пособии параллельный
алгоритм построчного умножения, при
котором строки матрицы распределяются
по процессорам построчно и каждый
процессор реализует операцию умножения
какой-либо отдельной строки матрицы
на
вектор
.
Другой возможный способ организации
параллельных вычислений может состоять
в построенииконвейерной
схемы для операции умножения строки
матрицы на вектор (скалярного
произведения векторов)
путем расположения всех имеющихся
процессоров в виде линейной
последовательности (линейки).
Подобная схема вычислений может быть определена следующим образом. Представим множество процессоров в виде линейной последовательности (см. рис. 4.7):
;
каждый
процессор
,
,
используется для умножения элементов
столбца
матрицы и
элемента
вектора
.
Выполнение вычислений на каждом
процессоре
,
,
состоит в следующем:
-
запрашивается очередной элемент
столбца
матрицы;
-
выполняется умножение элементов
и
;
-
запрашивается результат вычислений
предшествующего процессора;
-
выполняется сложение значений
;
-
полученный результат
пересылается
следующему процессору.

Рис. 4.7. Состояние линейного конвейера для операции умножения строки матрицы на вектор после выполнения двух итераций
При инициализации описанной схемы необходимо выполнить ряд дополнительных действий:
-
при выполнении первой итерации каждый
процессор дополнительно запрашивает
элемент вектора
;
-
для синхронизации вычислений (при
выполнении очередной итерации схемы
запрашивается результат вычисления
предшествующего процессора) на этапе
инициализации процессор
,
,
выполняет (
)
цикл ожидания.
Кроме
того, для однородности описанной схемы
для первого процессора
,
у которого нет предшествующего процессора,
целесообразно ввести пустую операцию
сложения (
).
Для
иллюстрации на рис. 4.7 показано состояние
процесса вычислений после второй
итерации конвейера при
.
2.
Оценка показателей эффективности
алгоритма.
Умножение первой строки на вектор в
соответствии с описанной конвейерной
схемой будет завершено после выполнения
(
)
параллельных операций. Результат
умножения следующих строк будет
происходить после завершения каждой
очередной итерации конвейера (напомним,
итерация каждого процессора включает
выполнение операций умножения и
сложения). Как результат, общее время
выполнения операции умножения матрицы
на вектор может быть выражено соотношением:
.
Данная
оценка также является большей, чем
минимально возможное время
выполнения
параллельного алгоритма при
.
Полезность использования конвейерной
вычислительной схемы состоит, как
отмечалось в предыдущем пункте, в
уменьшении количества передаваемых
данных и в более раннем появлении части
результатов вычислений.
Показатели эффективности данной вычислительной схемы определяются соотношениями:
,
,
.
3. Выбор топологии вычислительной системы. Необходимая топология вычислительной системы для выполнения описанного алгоритма однозначно определяется предлагаемой вычислительной схемой – это линейно упорядоченное множество процессоров (линейка).
