
Лекции / Лекция 5
.odtТехнологии и методы программирования. Лекция 5.
Правила проектирования вычислительных систем.
1) Выбор вычислительной схемы должен выполняться так, чтобы диаметр графа был минимален.
2) Tp<=T∞+T1/p
3) p>=T1/T∞
4) если p>=T1/T∞ то Tp<=2*T∞
Докажем теорему: Для любого количества процессоров верхняя граница времени выполнения параллельного алгоритма не превышает суммы минимального времени выполнения и времени выполнения алгоритма одним процессором, делённого на количество процессоров.
Доказательство:
Построим расписание H∞ для бесконечного числа процессоров. Nτ – количество операций, происходящих на итерации τ, 0<=τ<=T∞, измеряется в условных единицах. Время реализации итерации на бесконечном количестве процессоров — 1, на одном — Nτ следовательно, на p процессорах итерация τ будет обработана за Nτ /p условных единиц времени. Tp=Σ Nτ /p< Σ(Nτ /p+1)=T1+T∞, что и требовалос доказать.
Правила составления расписаний для p процессоров:
1) Сначала составляется расписание для T∞:
Выделяются независимые итерации и составляется расписание из расчёта, что все дотупные независимые итерации могут быть сделаны за раз. В результате получается T∞ итераций и набор значений Nτ — количество операций в итерациях
2) Адаптация для p процессоров:
Следует учесть, что каждая из T∞ итераций на p процессорах будет выполнена за Nτ/p условных единиц времени.
Оценка эффективности параллельного алгоритма.
1) Оценка ускорения, то есть отношения времени работы на одном процессоре к времени работы на p процессорах. Sp(n)=T1(n)/T∞(n)
2) Оценка эффективности, то если отношения ускорения к числу процессоров: Ep=T1(n)/(p*Tp(n)). Эффективность показывает, какую долю вносит в ускорение каждый процессор.
Возможна сверхлинейность ускорения — то есть возрастание эффективности с количеством процессоров. Она возникает из-за неравенства условий выполнения последовательного и параллельного алгоритмов. Так, для параллельного алгоритма данные могут полностью уместиться в оперативной памяти процессоров, в то время как при последовательном выполнении часть информации придётся хранить во внешней памяти, что увеличит время выполнения. Помимо этого, вычислительная схема параллельного алгоритма может быть сама по себе более эффективна, чем у последовательного.
Однако чаще повышение ускорения и количества процессоров ведёт к уменьшению эффективности. В реальных системах приходится искать компромисс между ускорением и эффективностью.
3) Оценка стоимости, то есть произведения количества процессоров на время выполнения. Cp=p*Tp(n). Критерий оптимальности утверждает, что алгоритм эффективен, пока стоимость параллельного алгоритма пропорциональна стоимости алгоритма последовательного.
Пример:
Вычисление частичных сумм.
Схема последовательного алгоритма:
Каждая
итерация использует результаты
предыдущих, поэтому распараллеливание
невозможно.
Каскадная схема:
N/2
процессоров,
N+1
операций
сложения, log2N
времени.
Ускорение: Sp(n)=(n-1)/log2(n).
Эффективность:
Ep(n)=(n-1)/(n/2*log2(n)),
стремится
к 0 при увеличении количества процессоров.
Для получения алгоритма с не стремящейся
к 0 эффективностью, необходимо уменьшить
число процессоров, причём в зависимости
от размера задачи.
Пусть p=n/log2(n). Тогда часть операций в итерациях приходится делать последовательно.
На
первом этапе делается log2(n)
операций
последовательно, на втором — столько
же итераций. Таким образом, общее время
— 2log2(n),
Sp(n)=(n-2)/(2*log2(n)),
Ep(n)=(n-1)/2n,
что
при увеличении количества процессоров
стремится к 0,5 — цель достигнута. Вообще,
уменьшение числа процессоров в log2n
раз
— стандартное решение. Стоимость
алгоритма — Cp=p*Tp=2n=2*T1
– пропорциональна
времени последовательного алгоритма.