
- •Конвейерная и параллельная обработка данных.
- •Ярусно- параллельная форма представления программы.
- •Крупно блочное распараллеливание. Примеры блочного распределения итераций цикла.
- •Пространство итераций. Метод гиперплоскостей.
- •Как определяется время выполнения параллельного алгоритма?
- •Как определяется расписание для распределения вычислений между процессорами?
- •Как определяются понятия ускорения и эффективности?
- •В чем различие показателей ускорения и эффективности для рассматриваемых вариантов каскадной схемы суммирования?
- •Понятие латентности.
- •Параллельный алгоритм сортировки методом пузырька.
- •Прием и передача данных между отдельными процессами. Прием и передача с блокировкой.
- •Прием и передача данных между отдельными процессами. Прием и передача без блокировки.
- •Прием и передача данных между отдельными процессами. Объединение запросов на взаимодействие.
- •Коллективное взаимодействие процессов. Рассылка сообщений.
- •Коллективное взаимодействие процессов. Сбор сообщений.
- •Синхронизация процессов.
- •Методы распараллеливания и модели программ, поддерживаемые OpenMp.
- •OpenMp -Параллельные и последовательные области программы. Директива parallel
- •OpenMp- Директива single
- •OpenMp- Директива sections
- •OpenMp- директива barrier
- •OpenMp- директива critical
- •OpenMp- Распараллеливание циклов.
Вопросы по параллельному программированию
Конвейерная и параллельная обработка данных.
Параллельная обработка. Если некое устройство выполняет одну операцию за единицу времени, то тысячу операций оно выполнит за тысячу единиц. Если предположить, что есть пять таких же независимых устройств, способных работать одновременно, то ту же тысячу операций система из пяти устройств может выполнить уже не за тысячу, а за двести единиц времени. Аналогично система из N устройств ту же работу выполнит за 1000/N единиц времени. Подобные аналогии можно найти и в жизни: если один солдат вскопает огород за 10 часов, то рота солдат из пятидесяти человек с такими же способностями, работая одновременно, справятся с той же работой за 12 минут - принцип параллельности в действии!
Идея конвейерной обработки заключается в выделении отдельных этапов выполнения общей операции, причем каждый этап, выполнив свою работу, передавал бы результат следующему, одновременно принимая новую порцию входных данных. Получаем очевидный выигрыш в скорости обработки за счет совмещения прежде разнесенных во времени операций. Предположим, что в операции можно выделить пять микроопераций, каждая из которых выполняется за одну единицу времени. Если есть одно неделимое последовательное устройство, то 100 пар аргументов оно обработает за 500 единиц. Если каждую микрооперацию выделить в отдельный этап (или иначе говорят - ступень) конвейерного устройства, то на пятой единице времени на разной стадии обработки такого устройства будут находится первые пять пар аргументов, а весь набор из ста пар будет обработан за 5+99=104 единицы времени - ускорение по сравнению с последовательным устройством почти в пять раз (по числу ступеней конвейера).
Ярусно- параллельная форма представления программы.
ЯПФ очень удобная
форма представления графа ИСА и часто
используется для различных целей
анализа. Пример ЯПФ приведен на рис. 1.
На каждом ярусе расположены функции
(операции), которые вычисляются независимо
друг от друга, они не поставляют друг
другу информацию. На каждой паре соседних
ярусов
на Яi
находятся поставщики информации и
только для функций яруса Яi+1.
В ЯПФ вводится дополнительная функция
«хранения информации» на ярусе (обозначена
как «=» и имеет смысл операции тождества).
Заметим, что ИСА может иметь несколько
вариантов ЯПФ – разложения. Составляющие
функции «+» и «»
в ИСА на рис. 1 не нужно понимать как
обычные «сложение» и «умножение», это
обозначение разных и может быть очень
сложных функций, которые в свою очередь
имеют ИСА.
Я0 Я1 Я2 Я3
+ * +
х1
z3
z1
х2
= х1
=
x3
x3
z2
Крупно блочное распараллеливание. Примеры блочного распределения итераций цикла.
Одним из конструктивных приемов крупноблочного распараллеливания сложных задач является распараллеливание по циклам
Прием позволяет представить процесс решения задачи в виде параллельных ветвей, полученных расщеплением цикла на части, число которых в пределе равно числу повторений цикла. На входе и выходе из цикла процесс вычислений – последовательный; доля последовательных участков в общем времени решения задачи незначительна.
Как правило, последовательные участки имеют место в начале и конце параллельной программы. На начальном участке осуществляется инициирование программы и ввод исходных данных, а на конечном – вывод результатов (запись в архивные файлы). При достаточно полном воплощении принципов модели коллектива вычислителей допустимы реализации в системе параллельных ввода и вывода информации.
Последовательные участки в параллельной программе также могут иметь место, если используются негрупповые обмены информацией между ветвями (вычислителями).