
- •Лекция №5
- •Параллельные алгоритмы. Начало
- •Параллельные алгоритмы. Проблемы:
- •Параллельные алгоритмы. Проблемы
- •Параллельные алгоритмы. Проблемы
- •Параллельные алгоритмы. Трудности реализации
- •В процессе решения данных проблем были сделаны следующие выводы касательно перевода и написания
- •3.Необходимо разрабатывать новые средства поддержки отладки параллельных программ, для функционирования которых возможно использовать
- •Особенности распараллеливания на машинах с распределенной памятью
- •Особенности распараллеливания на машинах с распределенной памятью
- •Для того, чтобы программа использовала максимальную производительность вычислительной системы, она должна:
- •Уменьшить затраты времени на обмен сообщениями можно следующими способами:
- •параллельное выполнение «глобальных» операций (например, суммирование частичных результатов из каждого узла):
- •последний подход – использование возможности системного широковещания:
- •Особенности распараллеливания на машинах с распределенной памятью
- •Особенности распараллеливания на машинах с общей памятью
- •Особенности распараллеливания на машинах с общей памятью
- •Параллелизм на прикладном уровне
- •Проблема балансировки и передачи сообщений
- •Признаки параллельных алгоритмов и программ
- •Виды параллелилизма
- •Параллелизм данных
- •Параллелизм данных
- •Параллелизм данных
- •Параллелизм данных
- •Параллелизм данных
- •Параллелизм данных
- •Параллелизм данных
- •Параллелизм данных
- •Параллелизм данных
- •Параллелизм данных
- •Параллелизм задач
- •Параллелизм задач
- •Параллелизм задач
- •Виды процессов
- •Виды процессов
- •Модели организации параллельных программ
- •Модель основанная на взаимодействии
- •Модель, основанная на взаимодействии
- •Модель, основанная на взаимодействии:
- •Виды моделей взаимодействия
- •Каналы связи
- •Блокировка процессов
- •Проблема взаимоблокировки
- •Модель, основанная на взаимодействии
- •Модель общая память
- •Гонка данных
- •Семафоры и блокировки
- •Семафоры и блокировки
- •Семафоры
- •Операции wait(s) и signal(s)
- •Семафоры со счетчиками
- •Проблемы, порождаемые блокировкой:
- •Проблемы, порождаемые блокировкой:
- •Взаимоблокировка
- •Достоинства и недостатки параллелизма задач
- •Достоинства и недостатки параллелизма по задачам

Виды параллелилизма
Существуют два основных вида параллелизма:
параллелизм данных - предполагает, что одна операция выполняется сразу над всеми элементами массива данных.
параллелизм задач - предполагается, что вычислительная задача разбивается на несколько относительно самостоятельных подзадач и каждый процессор загружается своей собственной подзадачей
Воснове обоих подходов лежит распределение вычислительной работы по доступным пользователю процессорам параллельного компьютера.

Параллелизм данных
Модель параллелизм данных использует параллелизм, который заключается в применении одной и той же операции к множеству элементов структур данных.
Распределяемыми данными обычно являются массивы.
Например, "умножить все элементы массива M на значение x
Распараллеливание операций над массивами, распараллеливание циклов обработки массивов позволяет увеличить производительность программы.

Параллелизм данных
Особенности:
Обработкой данных управляет одна программа;
Пространство имен является глобальным
для программиста существует одна единственная память
детали структуры данных, доступа к памяти и межпроцессорного обмена данными скрыты

Параллелизм данных
Слабая синхронизация вычислений на параллельных процессорах:
выполнение команд на разных процессорах происходит независимо
только иногда производится синхронизация - согласование выполнения циклов или других программных конструкций
каждый процессор выполняет один и тот же фрагмент программы, но нет гарантии, что в заданный момент времени на всех процессорах выполняется одна и та же машинная команда
Параллельные операции над элементами массива выполняются одновременно на всех доступных данной программе процессорах.

Параллелизм данных
Как правило параллелизм данных поддерживается на уровне языков программирования:
они допускают операции над массивами,
позволяют использовать в выражениях целые массивы, вырезки из массивов.
Векторизация или распараллеливание данных между процессорами в этом случае чаще всего выполняется уже на этапе компиляции - перевода исходного текста программы в машинные команды.
Роль программиста в этом случае обычно сводится к заданию опций векторной или параллельной оптимизации компилятору, директив параллельной компиляции, использованию специализированных языков для параллельных вычислений.

Параллелизм данных
Типичными примерами таких языков программирования являются:
высокопроизводительный ФОРТРАН (High Performance FORTRAN)
параллельные версии языка C (это, например, C*).
Программы с параллелизмом данных могут быть оттранслированы и исполнены на SIMD компьютерах.

Параллелизм данных
Языки программирования поддерживающие параллелизм данных, должны реализовывать базовый набор операций состоящий из:
операции управления данными:
в определенных ситуациях возникает необходимость в управлении распределением данных между процессорами
это может потребоваться, например, для обеспечения равномерной загрузки процессоров. Чем более равномерно загружены работой процессоры, тем более эффективной будет работа компьютера;

Параллелизм данных
операции над массивами в целом и их фрагментами:
аргументами таких операций являются массивы
вцелом или их фрагменты (сечения)
данная операция применяется одновременно (параллельно) ко всем элементам массива
примерами операций такого типа являются:
вычисление поэлементной суммы массивов,
умножение элементов массива на скалярный или векторный множитель и т.д.
операции могут быть и более сложными - вычисление функций от массива, например;

Параллелизм данных
условные операции - эти операции могут выполняться лишь над теми элементами массива, которые удовлетворяют какому-то определенному условию. В сеточных методах это может быть четный или нечетный номер строки (столбца) сетки или неравенство нулю элементов матрицы.;
операции приведения - операции приведения -преобразование значения переменной одного типа в значение другого типа, применяются ко всем элементам массива (или его сечения);
операции сдвига - для эффективной реализации некоторых параллельных алгоритмов требуются операции сдвига массивов. Примерами служат алгоритмы обработки изображений, конечно-разностные алгоритмы и некоторые другие.;

Параллелизм данных
операции сканирования (префиксными/суффиксными операции). Префиксная операция, например, суммирование выполняется следующим образом. Элементы массива суммируются последовательно, а результат очередного суммирования заносится в очередную ячейку нового, результирующего массива, причем номер этой ячейки совпадает с числом просуммированных элементов исходного массива;
операции, связанные с пересылкой данных – это, например, операции пересылки данных между массивами разной формы (то есть имеющими разную размерность и разную протяженность по каждому измерению) и некоторые другие.