Примеры Закона Амдаля - PullRequest
       52

Примеры Закона Амдаля

5 голосов
/ 08 апреля 2011

Закон Амдала гласит, что максимальное ускорение вычислений, при котором доля S вычислений должна выполняться последовательно при переходе от 1-процессорной системы к N-процессорной системе, составляет самое большее

                 1 / (S + [(1 - S) / N])

Кто-нибудь знает книги или заметки, где проводится фактический анализ кода, для некоторых нетривиальных вычислений, для определения доли S?

Ответы [ 3 ]

4 голосов
/ 08 апреля 2011

В книге Microsoft «Шаблоны и практики» очень хорошо обсуждается закон Амдала о Параллельное программирование с .NET .

Детальный анализ кода будет довольно сложным - каждая ситуация уникальна.

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

2 голосов
/ 08 апреля 2011

Этот принцип не уникален для распараллеливания. Если бы 25% времени программы было потрачено на выполнение какой-то конкретной операции, то есть выполнение всего, кроме 25%, происходило мгновенно (без влияния на 25%), что привело бы к тому, что программа ушла бы на 25% от исходного времени и, таким образом, была в четыре раза быстрее.

В тех случаях, когда алгоритм имеет четкие фазы, которые являются или не могут быть распараллелены, применение вышеприведенной формулы было бы простым - представьте, что параллелизация N-способов сделает части, которые распараллеливаются, в N раз быстрее, а части которые не распараллеливаются, будут работать с нормальной скоростью. На практике, я не думаю, что большинство алгоритмов полностью состоят из частей, которые либо на 100% параллелизуемы, либо на 100% последовательны. В большинстве интересных случаев алгоритмы могут работать в основном параллельно, но имеют различные ограничения порядка; в некоторых случаях ограничения точного порядка могут зависеть от данных. Таким образом, «процент распараллеливания» может варьироваться в зависимости от количества процессоров, среди прочего, и поэтому попытка вставить его в формулу не будет очень полезной.

...