Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект лекций 1.doc
Скачиваний:
3
Добавлен:
01.05.2025
Размер:
785.92 Кб
Скачать

4.3.3.3. Модель общая память

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

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

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

4.3.4. Оценки эффективности параллелизма.

Ускорение, получаемое при использовании параллельного алгоритма для p процессоров, по сравнению с последовательным вариантом выполнения вычислений определяется

,

т.е. как отношение времени решения задач на скалярной ЭВМ к времени выполнения параллельного алгоритма (величина n используется для параметризации вычислительной сложности решаемой задачи и может пониматься, например, как количество входных данных задачи).

Максимальный фактор ускорения Sp(n)=n (линейное ускорение). В общем случае Sp(n)< p, так как параллельный алгоритм обычно не может обеспечить идеальной балансировки нагрузки процессоров. Теоретически возможны алгоритмы с суперлинейным ускорением Sp (n)>p. Это возможно, например, в алгоритмах поиска.

Закон Амдаля. Выполнение любого параллельного алгоритма включает в себя как последовательную часть так и параллельную.

Обозначим через f ту часть алгоритма, которая не распараллеливается, тогда та часть алгоритма, которую можно распределить по процессорам, будет равна (1-f) (затраты на коммутацию не учитываются). Пусть T1 - время выполнения алгоритма на одном процессоре однопроцессорной системы (последовательная машина), p - число процессоров. При переносе расчетов на параллельную машину время расчета распределится следующим образом:

  • время f T1займет та часть алгоритма, которую невозможно распараллелить,

  • время (1-f) T1 / p будет затрачено на распараллеливаемую часть алгоритма.

Истинное время Tp, затраченное на работу на параллельной машине c p процессорами, будет рассчитываться по формуле:

Tp=f T1+(1-f) T1 / p.

Определим фактор ускорения расчета Sp(n), достигаемый на параллельной машине c p процессорами, как Sp= T1 / Tp.

Sp= T1 / Tp = p/(fp+1-f) или Sp = p/(1+(p-1)f)=p/(fp+1-f)

где f- доля операций, выполняемых последовательно.

Эта формула называется законом Амдаля (Gene Amdahl) об ограничении скорости параллельных вычислений. Она была выведена в 1967 году и говорит о том, что даже если часть последовательных вычислений мала, максимальный фактор ускорения для бесконечного числа процессоров не превосходит 1 / f.

Для существенного увеличения фактора ускорения Sp необходимо минимизировать долю операций f, выполняемых последовательно: f<<1. Однако даже в этом случае величина fp может быть достаточно заметной при большом числе используемых процессоров p. При f<<1 закон Амдаля будет преобразован в виде: Sp=p  / (1+f p)  , Из приведенных графиков видно, что при большой доле последовательной части алгоритма f (близкой к 1) увеличение числа процессоров не приводит к существенному ускорению выполнения задачи.

При заданном значении f величина Sp приближается к своему асимптотическому значанию, приблизительно равному 1 /f , поэтому существует некоторое критическое значение количества процессоров p, после которого наращивание числа процессоров не приводит к увеличению фактора ускорения.

Эффективность использования параллельным алгоритмом процессоров при решении задачи определяется соотношением:

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

Как следует из приведенных соотношений, в наилучшем случае Sp(n) = p и Ep(n) = 1.