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

Лекция №5
Параллельные алгоритмы

Параллельные алгоритмы. Начало
Параллельные алгоритмы стали массово разрабатываться в конце 80-х, начале 90-х годов.
Производители вычислительной техники стали предоставлять разработчикам и программистам средства управления при использовании множества процессоров для решения одной задачи.
Поначалу их внедрение вызвало живой энтузиазм.
Но по мере внедрения пришло осознание наличия существенных проблем, возникающих перед разработчиками.
Оказалось, что параллельное программирование может быть гораздо более сложным и трудоемким,чем последовательное программирование.
Трудозатраты на распараллеливание не всегда компенсируются существенным увеличением скорости вычислений

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

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

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

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

В процессе решения данных проблем были сделаны следующие выводы касательно перевода и написания кодов на многопроцессорных ЭВМ:
1.Большие трудности связаны с необходимостью «привязки» параллельного кода к конкретной архитектуре многопроцессорной системы. Машины с общей и распределенной памятью требует принципиально различных парадигм программирования.
2.Необходимо разрабатывать и использовать стандартные схемы синхронизации. Кроме локализации ошибок и ограничения сложности программ такой подход облегчает использование программы другими программистами.

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

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

Особенности распараллеливания на машинах с распределенной памятью
Способы уменьшения времени на обмен сообщениями:
уменьшение количества необходимых точек синхронизации (ожидание процессом прихода сообщений от других процессов).
При больших затратах времени на синхронизацию могут оказаться полезными отказ от модели “одна программа – множество данных” и загрузка более одного процесса в узел.
Однако распределение процессов по узлам – это серьезная задача по осуществлению балансировки нагрузки.