Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лекции / Лекция 6

.doc
Скачиваний:
30
Добавлен:
06.07.2016
Размер:
19.46 Кб
Скачать

Технологии и методы программирования. Лекция 6.

Максимально достижимое ускорение.

Оценим верхнюю границу эффективности:

Sp<=ts/ tp

При этом tp=f*ts+(1-f)*ts/p, где ts – всё время выполнения, f – доля последовательных, нераспараллеленых операций в алгоритме, tp — время выполнения последовательных операций. Тогда Sp<=ts/ tp = ts/(f*ts+(1-f)*ts/p) = 1/(f+(1-f)/p). Полученное соотношение называется законом Амдаля. Для паракомпьютера, при бесконечном количестве процессоров, верхняя граница эффективности стремится к 1/f. Так, в модифицируемой каскадной схеме сложения элементов последовательности f=n/log(n), значит, при размерности 16 ускорение не может быть выше 4 при любом количестве процессоров. Закон Амдаля используется в сравнении алгоритмов — чем меньше f, тем лучше эффективность. При этом предполагается, что f постоянно, хотя для большинства параллельных алгоритмов f зависит от размерности: чем меньше размерность, тем меньше f. Если оптимизировать число процессоров, и начать увеличивать размерность, что ускорение будет возрастать, так как f будет уменьшаться. Это называется эффектом Амдаля.

Пример: модифицированная каскадная схема сложения элементов последовательности.

Tp=n/p+log2p

f=1/p+log2p/n

Видно, что с ростом размерности f падает.

Экспериментальное определение f. (идея предложена Бакановым)

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

f=(p/Sp-1)/(p-1)

Для расчёта нужно построить график эффективности от числа процессоров, а затем методом наименьших квадратов определить уровень наклона и, по нему, f.

Бакановым было показано на кластере МГУ, что при умножении матриц f=0,051 при сложности алгоритма O(n3). Таким образом, оказалось, что оценка верхней границы ускорения по Амдалю сильно завышена, и было предложено использовать формулу

Sp=1/(1+(1-f)/p+c), где с — коэффициент деградации.

с=cw*ct

cw=wc/w

ct=tc/t, где с — коэффициент, определяющий свойства алгоритма, wc — количество операций коммуникации, w – общее число операций, ct — отношение вычислительной производительности платформы (tc) к вычислительной производительности сетевого оборудования (t). Эти коэффициенты могут быть рассчитаны экспериментально.

Закон Густавина — Барсена:

g=t(n)/(t(n)+π(n)/p), где t(n) – время выполнения последовательных операций, а π(n) – параллельных. Если при увеличении размерности g стремится к 0, то эффективность стремится к количеству процессоров — это характерно для хороших алгоритмов. Оценка ускорения с помощью g называется ускорением масштабирования.

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

Алгоритм называется масштабируемым, если при увеличении числа процессоров он обеспечивает рост ускорения при сохранении эффективности.

T0=pTp-T1, где T0 — время, которое тратится на накладные расходы: синхронизацию, разбиение на параллельные ветви, Tp – время выполнения на p процессорах, а T1 — на 1.

Tp=(T0+T1)/p

Sp=T1/Tp=p*T1/(T0+T1)

Ep=T1/(T0+T1)

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

Соседние файлы в папке Лекции