Историческая эволюция вычислительных систем столкнулась с жесткими аппаратными барьерами:
Когда квант времени процесса истекает или процесс блокируется на I/O:
CR3.SMP (Symmetric Multiprocessing) — симметричная архитектура с общей разделяемой памятью (Shared Memory):
Каждый сокет содержит собственный встроенный контроллер памяти и локальные модули DDR4/DDR5 (локальный узел).
Сокеты связаны высокоскоростными пакетными шинами: Intel UPI или AMD Infinity Fabric.
Если каждое ядро имеет локальный L1/L2 кэш, изменение переменной в одном кэше делает невалидной копию в других кэшах:
| Статус | Значение в кэше | Состояние ОЗУ | Права на запись |
|---|---|---|---|
| M (Modified) | Единственная измененная копия (Dirty) | Устарело (требуется Write-Back) | Разрешена мгновенно |
| E (Exclusive) | Единственная чистая копия (Clean) | Совпадает с кэшем | Разрешена (переход в M) |
| S (Shared) | Разделяется между ядрами для чтения | Совпадает с кэшем | Запрещена без BusInval |
| I (Invalid) | Недействительные / пустые данные | Не определено | Кэш-промах (Cache Miss) |
Два независимых потока изменяют две разные переменные, попавшие в одну 64-байтную строку кэша:
varA → строка в кэше Ядра 2 инвалидируется (I).varB → строка в кэше Ядра 1 инвалидируется (I).alignas(64) или искусственный заполнитель (padding).Кластер — объединение автономных компьютеров (узлов) через высокоскоростную сеть:
MPI_Send, MPI_Recv (точка-точка), MPI_Bcast, MPI_Allreduce (коллективные операции), MPI_Barrier (барьерная синхронизация).| Интерконнект | Задержка (Latency) | Механизм передачи | Эффективность в HPC |
|---|---|---|---|
| Gigabit Ethernet | 20–50 мкс | Стек TCP/IP ядра ОС, копирование буферов, прерывания | Низкая (узкое место для MPI) |
| RoCE v2 (RDMA over Ethernet) | 1.5–3.0 мкс | RDMA аппаратно, обход ядра (Kernel-Bypass), Zero-Copy | Высокая (корпоративные дата-центры) |
| InfiniBand (HDR/NDR) | 0.6–1.0 мкс | Аппаратная сеть без потерь (Lossless), SHARP (редукция в свитчах) | Максимальная (стандарт Top500) |
Размер задачи фиксирован. При доле последовательного кода s = 0.05 предел ускорения равен 20 раз при любом числе процессоров!
С ростом числа узлов растет сложность задачи. Ускорение масштабируется почти линейно, размывая последовательную часть.
numactl).MPI_Isend/Irecv) для перекрытия сетевых пересылок локальными вычислениями.