Цель технологий параллелизма
• Обеспечить условия, позволяющие компьютерным программам делать больший объем работы за тот же интервал времени. (Загрузить компьютер по полной)
• Проектирование программ должно ориентироваться…..
Два подхода к достижению параллельности
• Методы параллельного программирования позволяют распределить работу программы между двумя (или более) процессорами в рамках одного физического или одного виртуального компьютера.
• Методы распределенного программирования позволяют распределить работу программы между двумя (или более) процессорами, причем процессоры могут существовать на одном и том же компьютере или на разных.
Схемы параллелизма
Одна программа – много данных
(Sungle-program,Multiple-data(SPMD))
Одна программа, несколько потоков данных.
• Все процессоры выполняют одни и те же операции, но с разными данными.
• Запускается несколько копий одной и той же программы.
Множество программ – множество данных
(Multiple-programs,Multiple-Data(MPMD))
• Процессоры выполняют различные виды работы.
• При этом они вместе пытаются решить одну проблему.
• Каждому из них выдается свой аспект этой проблемы.
35. Основные проблемы параллельного и распределенного программирования.
Параллельное программирование является более сложным по сравнению с последовательным как в написании кода, так и в его отладки. Для облегчения процесса параллельного программирования существуют специализированные инструменты, например, отладчик TotalView, статический анализатор кода VivaMP.
Параллельное программирование
•Программы – совокупность описаний процессов, которые могут выполняться как в действительности одновременно, так и в псевдопараллельном режиме.
•Позволяют достичь заметного выигрыша при обработке больших объемов данных, поступающих от одновременно работающих пользователей, либо имеющих высокую интенсивность.
•Часто применяют в системах реального времени.
•Недостаток – высокие накладные расходы на разработку программ.
•Ada,MC#.
• Параллелизм – свойство, отличающее активные объекты от пассивных.
• Разделение предметной области на объекты позволит разнести общий функционал системы по нескольким потокам и процессам, часть из которых сможет выполняться одновременно.
Проблемы параллельного программирования
• Трудность организации связи. Зачастую параллельные среды состоят из гетерогенных компьютерных сетей. Разным может быть все, начиная от ОС и разрядности, заканчивая форматами передачи данных.
• Выбор оптимального количества процессоров. При увеличении степени параллельности в определенный момент она становится неэффективной.
36. Оценка максимально возможного параллелизма.
Процесс проектирования распределенных и параллельных систем состоит из этапов
1) Декомпозиция – процесс разбиения задачи на части и её решение.
2) Связывание – связь частей между собой.
3) Синхронизация – координация функционирования компонентов единой системы, порядка работы, определения критерия, когда цель достигнута.
Проблемы параллельного и распределенного программирования
1) Гонка данных – если несколько задач одновременно попытаются изменить некоторую общую область данных, а конечное значение данных при этом будет зависеть от того, какая задача обратится к этой области первой.
2) Бесконечная отсрочка – ситуация, когда задача должна ожидаться до тех пор, пока не произойдет событие или не создадутся определенные условия для их запуска. Если ожидаемое событие не состоится, то задачи могут никогда не выполниться.
3) Взаимоблокировка – возникает, когда две и более задачи постоянно блокируют друг друга в ситуации, когда у каждой задачи заблокирован ресурс, который пытается заблокировать другие задачи.
4) Трудности организации связи
5) Выбор оптимального количества процессоров – при увеличении степени параллельности она становится не эффективной.
Показатели эффективности параллельного алгоритма
Ускорение
Ускорение (speedup), получаемое при использовании параллельного алгоритма для p процессоров, по сравнению с последовательным вариантом выполнения вычислений определяется данной величиной.
т. е. как отношение времени решения задач на скалярной ЭВМ к времени выполнения параллельного алгоритма (величина n используется для параметризации вычислительной сложности решаемой задачи и может пониматься, например, как количество входных данных задачи).
Эффективность
• Эффективность использования параллельным алгоритмом процессоров при решении задачи определяется соотношением:
T – количество процессоров
• (величина эффективности определяет среднюю долю времени выполнения алгоритма, в течение которой процессоры реально используются для решения задачи).
Стоимость
Cp=p*Tp
• Стоимостно-оптимальный параллельный алгоритм – метод, стоимость которого является пропорциональной времени выполнения наилучшего последовательного алгоритма.