Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УМК 2 Лекционный курс.doc
Скачиваний:
20
Добавлен:
16.08.2019
Размер:
3.92 Mб
Скачать

2.Методы повышения производительности традиционных эвм

В Кембридже в 1949 году компьютер EDSAC мог выполнить 100 арифметических операций в секунду. Время такта составляло 2 микросекунды. У одного из узлов современной суперЭВМ Hewlett-Packard V2600 время одного такта составляет 1,8 наносекунды. При этом пиковая производительность примерно 77 миллиардов арифметических операций. Получается, что при выигрыше в быстродействии в 1000 раз, увеличение производительности составило 700 000 000 раз. За счет чего? Ответ прост – за счет использования новых архитектур. Основной является параллельная обработка данных.

Но все не так просто. А какой тип процессоров выбрать, какую память надо взять? И это далеко не полный список вопросов. Чтобы разобраться во всем многообразии возможных решений рассмотрим возможные методы такого ускорения.

2.1. Распараллеливание расчетов

Самое простое предположение, что Р процессоров выполнят задачу в Р раз быстрее, чем один, срабатывает только в идеальном случае. Обычно, дела обстоят не так уж хорошо, что иллюстрирует закон Амдала:

, (2.1)

где S – ускорение работы программы на P процессорах; f – доля непараллель­ного кода в программе.

Эту формулу можно применять как для моделей с общей памятью, так и для модели передачи сообщений. Но для разных моделей понятие величина f представляет разные показатели. Для модели общей памяти эту долю образуют операторы, которые выполняются только в главной нити программы. В модели передачи сообщений непараллельная часть – это часть операторов, которые дублируются всеми процессорами. Напрямую, просто взглянув на код программы, оценить величину f практически невозможно. Это позволяет сделать только просчет на различном числе процессоров. Для наглядности можно привести следующую таблицу:

Таблица 2.1.

Ускорение работы программы в зависимости от доли непараллельного кода [3]

Число процессоров

Доля последовательных вычислений %

50

25

10

5

2

Ускорение работы программы

4

1.60

2.28

3.07

3.48

3.77

8

1.78

2.91

4.71

5.93

7.02

16

1.88

3.36

6.40

9.14

12.31

32

1.94

3.66

7.80

12.55

19.75

512

1.99

3.97

9.83

19.28

45.63

Как видно из таблицы, если доля последовательного кода составляет 2%, то более чем в 50 раз ускорить процесс нельзя. Но, чтобы получить такое ускорение, запускать программу на 1024 (и более) процессорах ни к чему. Приемлемым может оказаться выполнение задачи и на 32 процессорах. Закон Амдала всего лишь устанавливает максимальное число процессоров, на которых будет выполняться программа с заданной эффективностью, при указанной доле непараллельного кода. Причем, в этой формуле не учитываются потери производительности при обмене информацией между процессорами. Поэтому, в реальности ситуация будет еще хуже.

Не стоит думать, что распараллеливание – единственный метод увеличения скорости работы программы. Достаточно всего лишь оптимизировать код, и даже на однопроцессорной ЭВМ можно добиться существенного ускорения.