Домашнее задание - Архитектуры вычислительных систем и оценка производительности

Выполняйте только если преподаватель назначил это задание. Срок сдачи сообщит преподаватель.

Разобранный образец: расчет пиковой производительности и пределов ускорения по закону Амдала и Густафсона

Условие задачи-образца:

Вычислительный узел состоит из двух 16-ядерных процессоров (всего 32 ядра), работающих на частоте 3.0 ГГц. Каждое ядро за один такт выполняет 16 операций с плавающей запятой двойной точности (DP FLOP/цикл с поддержкой AVX2 FMA). На данном узле запускается алгоритм численного моделирования, в котором доля последовательного кода составляет 5% ($s = 0.05$, $p = 0.95$). Требуется:

  1. Рассчитать теоретическую пиковую производительность узла ($R_{peak}$) в GFLOPS и TFLOPS.
  2. Рассчитать теоретическое ускорение узла ($S_{Amdahl}$) по закону Амдала при использовании всех 32 ядер. Найти эффективность распараллеливания ($E = S / n$).
  3. Рассчитать ускорение по закону Густафсона-Барсиса ($S_{Gustafson}$) в предположении, что объем задачи масштабируется пропорционально числу ядер.

Эталонное решение:

  1. Расчет теоретической пиковой производительности ($R_{peak}$):
    Формула: $R_{peak} = N_{ядер} \times f \times \text{FLOP/цикл}$.
    Подстановка данных: $R_{peak} = 32 \times 3.0 \times 10^9 \text{ Гц} \times 16 \text{ оп/цикл} = 1536 \times 10^9 \text{ FLOP/s}$.
    В единицах измерения: $R_{peak} = \mathbf{1536 \text{ GFLOPS}} = \mathbf{1.536 \text{ TFLOPS}}$ (двойная точность FP64).
  2. Расчет ускорения по закону Амдала (Strong Scaling):
    Формула: $S_A = \frac{1}{s + \frac{p}{n}} = \frac{1}{0.05 + \frac{0.95}{32}}$.
    Вычисление параллельной компоненты: $\frac{0.95}{32} \approx 0.0296875$.
    Знаменатель: $0.05 + 0.0296875 = 0.0796875$.
    Ускорение: $S_A = \frac{1}{0.0796875} \approx \mathbf{12.55}$ раз.
    Эффективность: $E_A = \frac{S_A}{n} = \frac{12.55}{32} \approx 0.392$ или $\mathbf{39.2\%}$.
    Вывод: Из-за всего 5% последовательного кода производительность 32 ядер используется лишь на 39.2%, а предельное теоретическое ускорение при бесконечном числе ядер не превысит $\frac{1}{s} = \frac{1}{0.05} = 20$ раз.
  3. Расчет ускорения по закону Густафсона-Барсиса (Weak Scaling):
    Формула: $S_G = s + p \times n = 1 + (n - 1) \times p$.
    Подстановка: $S_G = 0.05 + 0.95 \times 32 = 0.05 + 30.40 = \mathbf{30.45}$ раз.
    Эффективность: $E_G = \frac{S_G}{n} = \frac{30.45}{32} \approx 0.952$ или $\mathbf{95.2\%}$.
    Вывод: Если с ростом вычислительной мощности пропорционально увеличивать детализацию модели (число ячеек сетки), то доля последовательных накладных расходов размывается, обеспечивая близкое к линейному ускорение ($30.45\times$ на 32 ядрах).

Упражнение 1. Классификация архитектур ЭВМ и метрики быстродействия

Ответьте на теоретические вопросы, опираясь на таксономию Флинна и методики тестирования производительности.

Упражнение 2. Расчет пиковой производительности и масштабируемости

Выполните практический расчет характеристик вычислительной системы по приведенным исходным данным.

Исходные данные:
Серверный вычислительный кластер состоит из 16 двухпроцессорных узлов (в каждом узле 2 процессора по 16 ядер с тактовой частотой 2.0 ГГц, выполняющих 16 DP FLOP/цикл на ядро). Общее число ядер в кластере: $16 \times 2 \times 16 = 512$ ядер.
В параллельной программе физического моделирования доля строго последовательного кода составляет 1% ($s = 0.01$, $p = 0.99$).