
- •В.П. Гергель, р.Г. Стронгин Основы параллельных вычислений для многопроцессорных вычислительных систем
- •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.
Выбор параллельного способа вычислений.
При уменьшении количества процессоров
до величины
параллельная
вычислительная схема умножения матрицы
на вектор может быть получена в результате
адаптации алгоритма построчного
умножения. В этом случае каскадная схема
суммирования результатов поэлементного
умножения вырождается и операция
умножения строки матрицы на вектор
полностью выполняется на единственном
процессоре. Получаемая при таком подходе
вычислительная схема может быть
конкретизирована следующим образом:
-
на каждый из имеющихся процессоров
пересылается вектор
и
строк
матрицы;
- выполнение операции умножения строк матрица на вектор выполняется при помощи обычного последовательного алгоритма.
Следует отметить, что размер матрицы может оказаться не кратным количеству процессоров и тогда строки матрицы не могут быть разделены поровну между процессорами. В этих ситуациях можно отступить от требования равномерности загрузки процессоров и для получения более простой вычислительной схемы принять правило, что размещение данных на процессорах осуществляется только построчно (т.е. элементы одной строки матрицы не могут быть разделены между несколькими процессорами). Неодинаковое количество строк приводит к разной вычислительной нагрузке процессоров; тем самым, завершение вычислений (общая длительность решения задачи) будет определяться временем работы наиболее загруженного процессора (при этом часть от этого общего времени отдельные процессоры могут простаивать из-за исчерпания своей доли вычислений). Неравномерность загрузки процессоров снижает эффективность использования МВС и, как результат рассмотрения данного примера можно заключить, что проблема балансировки относится к числу важнейших задач параллельного программирования.
2. Оценка показателей эффективности алгоритма. Время выполнения параллельного алгоритма определяется оценкой
,
где
величина
есть
наибольшее количество строк, загружаемых
на один процессор. С учетом данной оценки
показатели эффективности предлагаемой
вычислительной схемы имеют вид:
,
.
При кратности размера матрицы и количества процессоров показатели ускорения и эффективности алгоритма приводятся к виду:
,
и принимают, тем самым, максимально возможные значения.
3. Выбор топологии вычислительной системы. В соответствии с характером выполняемых межпроцессорных взаимодействий в предложенной вычислительной схеме в качестве возможной топологии МВС может служить организация процессоров в виде звезды (см. рис. 1.1). Управляющий процессор подобной топологии может использоваться для загрузки вычислительных процессоров исходными данными и для приема результатов выполненных вычислений.
4.3. Матричное умножение
Задача умножения матрицы на матрицу определяется соотношениями
.
(для
простоты изложения материала будем
предполагать, что перемножаемые матрицы
и
являются
квадратными и имеют порядок
).
Анализ возможных способов параллельного выполнения данной задачи может быть проведен по аналогии с рассмотрением задачи умножения матрицы на вектор. Оставив подобный анализ для самостоятельного изучения, покажем на примере задачи матричного умножения использование нескольких общих подходов, позволяющих формировать параллельные способы решения сложных задач.