Перейти к основному содержимому

О разделе

Раздел про параллельные вычислительные процессы — целую дисциплину: как устроены параллельные машины, как формально описать алгоритм, оценить ускорение и построить распараллеливание осознанно.

Это другой уровень, чем асинхронность (неблокирующий I/O) или масштабирование сервисов. Здесь речь о том, как разделить вычисление между ядрами, узлами кластера или GPU и доказать, что это даст выигрыш.

Рекомендуемый порядок:

ШагМатериалЗачем
1Введение и проблемы HPCЗачем параллелизм, типичные узкие места
2Классификация архитектурФлинн, SIMD, конвейер, степень параллелизма
3Память, кластеры, GRIDShared vs distributed, NUMA, метакомпьютинг
4Модели и топологииPRAM, message passing, SPMD, сети процессоров
5Граф алгоритмаМатрица следования, несовместимые операторы
6Временной анализРанние/поздние сроки, минимум процессоров
7Законы производительностиАмдаль, Густафсон-Барсис, масштабируемость
8Инженерия алгоритмовДекомпозиция, data/task parallelism
9Умножение матрицКлассический практический пример
10Петри и расписанияФормальные модели процессов
11Практика OpenMP/MPIКод, профилирование, отладка

С чего начать, если вы уже знаете потоки: прочитайте 1 (проблемы HPC, Roofline) и 7 — там формулы и «почему 16 ядер ≠ ×16 скорости». Затем 56, если нужен академический разбор алгоритма по графу.

Смежные материалы: