Скорость обработки данных — это пульс любой вычислительной системы. От смартфона в кармане до кластера, моделирующего ядерный взрыв, все они оперируют одной фундаментальной величиной: количеством элементарных действий за единицу времени. Понимание этой метрики позволяет не только сравнивать «железо», но и прогнозировать, какие задачи станут доступны завтра.
В статье мы разберём, как появились стандарты измерения, почему теоретические пики часто не совпадают с реальностью, и что скрывается за аббревиатурами в даташитах современных ускорителей.
Что такое FLOPS и зачем нужна стандартизация
FLOPS (Floating Point Operations Per Second) — количество операций с плавающей запятой в секунду. Это де-факто стандарт для оценки вычислительной производительности в научных, инженерных и задачах машинного обучения. В отличие от целочисленной арифметики, операции с плавающей точкой отражают способность системы работать с непрерывными величинами: координатами, физическими константами, весами нейросетей.
Стандартизация пришла с появлением теста Linpack в 1970-х. Джек Донгарра предложил решать систему линейных уравнений методом Гаусса — нагрузка, близкая к реальным расчётам. Результат в MFLOPS (миллион операций) стал первым универсальным «денежным эквивалентом» мощности. Сегодня единица измерения сдвинулась в сторону PFLOPS (петафлопс = 10¹⁵) и даже EFLOPS (экзафлопс = 10¹⁸).
Важно различать теоретический пик (частота × ядра × SIMD-ширина × FMA) и устойчивую производительность (Sustained Performance). Маркетинг любит первый цифру, инженеры — вторую.
⚠️ Внимание: Теоретический пик FLOPS игнорирует пропускную способность памяти, задержки кэша и накладные расходы планировщика. Реальная эффективность на Linpack редко превышает 70–80 % от пика, а в прикладных кодах — 10–30 %.
История: от ENIAC до экзаскального барьера
Первый электронный компьютер ENIAC (1945) выдавал около 500 FLOPS — меньше, чем современный микроконтроллер за доллар. К 1976 году Cray-1 прорвал рубеж в 160 MFLOPS, введя векторную архитектуру. 1997 год: ASCI Red (Intel) стал первым терафлопс-системой (1 TFLOPS), заняв 1500 кв. м и потребляя 850 кВт.
Петрафлопс (1 PFLOPS) преодолён в 2008 году системой Roadrunner (IBM, гибрид Cell + Opteron). Экзафлопсный рубеж (1 EFLOPS в двойной точности FP64) официально пройден только в 2022 году суперкомпьютером Frontier (AMD CPU + GPU Instinct) в ОРНЛ. Frontier достиг 1.102 EFLOPS на Linpack при пике 1.685 EFLOPS — это первый случай в истории, когда устойчивая производительность превысила экзафлопс.
Параллельно развивалась GPU-архитектура. NVIDIA GeForce 256 (1999) — первый «GPU» с аппаратным T&L, давал ~50 GFLOPS. Современный H100 (Hopper) в FP64 выдаёт 67 TFLOPS, а в тензорном BF16 — до 1979 TFLOPS (спарсность 2:1). Рост за 20 лет — 40 000×.
Почему Cray-1 был революционным?
Cray-1 использовал векторные регистры длиной 64 элемента и конвейеризацию арифметических блоков. Это позволяло выполнять одну инструкцию над массивом данных (SIMD до модного термина). Архитектура задала вектор развития HPC на десятилетия: современные AVX-512 и SVE — прямые потомки идей Симора Крея.
Основные префиксы и порядки чисел
Навигация в зоопарке префиксов SI — базовый навык. Ниже таблица для быстрой ориентации: степень десятки, обозначение и пример системы, вышедшей на этот уровень.
| Префикс | Степень 10 | Операций в сек | Пример системы (год) |
|---|---|---|---|
| Kilo (k) | 10³ | 1 000 | ENIAC (1945) ~0.5 kFLOPS |
| Mega (M) | 10⁶ | 1 000 000 | Cray-1 (1976) 160 MFLOPS |
| Giga (G) | 10⁹ | 1 000 000 000 | Intel i860 (1989) ~80 MFLOPS пик, первый GFLOPS-кластер позже |
| Tera (T) | 10¹² | 1 000 000 000 000 | ASCI Red (1997) 1.3 TFLOPS |
| Peta (P) | 10¹⁵ | 10¹⁵ | Roadrunner (2008) 1.026 PFLOPS |
| Exa (E) | 10¹⁸ | 10¹⁸ | Frontier (2022) 1.102 EFLOPS |
| Zetta (Z) | 10²¹ | 10²¹ | Прогноз: 2030-е (zettascale) |
Обратите внимание: в маркетинге ИИ-ускорителей часто используют TOPS (Trillion Operations Per Second) для целочисленной арифметики INT8/INT4. 1 TOPS = 1 TFLOPS по порядку величины, но физически это другие операции. Сравнивать их напрямую нельзя.
TOP500, Green500 и методика Linpack
Список TOP500 обновляется дважды в год с 1993 года. Базовый бенчмарк — HPL (High Performance Linpack): решение плотной системы линейных уравнений Ax=b методом Гаусса с частичным выбором главного элемента. Размер матрицы N выбирают так, чтобы задача занимала 70–80 % оперативной памяти и работала не менее нескольких часов.
Результат измеряется в Rmax (максимально достигнутая производительность) и Rpeak (теоретический пик). Отношение Rmax/Rpeak показывает эффективность масштабирования. Для Frontier оно ~65 %, для Fugaku (A64FX, ARM SVE) — ~82 %, что говорит о выдающейся балансированности памяти и вычислителей.
Green500 ранжирует те же системы по энергоэффективности (GFLOPS/Watt). Лидеры последних лет — архитектуры на ARM и специализированные ИИ-чипы. Henri (Flatiron Institute, NVIDIA A100) показал >65 GFLOPS/W в FP64.
⚠️ Внимание: Linpack нагружает преимущественно FP64 и линейную алгебру. Реальные приложения (CFD, климатические модели, геномика) имеют иную структуру доступа к памяти. Всегда смотрите на прикладные бенчмарки (HPCG, MLPerf, SPEChpc) перед закупкой.
Linpack (HPL) — стандарт де-факто для TOP500, но он не отражает производительность в разреженных матрицах, графах или инференсе LLM. Для ИИ смотрите MLPerf Training/Inference.
ИИ-эра: тензорные ядра, TF32, BF16, FP8 и спарсность
С 2017 года (архитектура Volta) NVIDIA ввела тензорные ядра — матричные мультипликаторы 4×4×4 (позже 16×16×16), выполняющие операцию D = A×B+C за один такт. Это сместило фокус с FP32/FP64 на форматы сниженной точности: TF32 (19 бит мантиссы, 8 бит экспоненты), BF16 (Brain Float 16, 7 бит мантиссы), FP8 (E4M3/E5M2).
Hopper (H100) добавил поддержку структурной спарсности 2:4 — аппаратное пропускание нулевых весов. В даташите указано 1979 TFLOPS для BF16 с парсностью. Без спарсности — ~989 TFLOPS. Разница в 2× чисто маркетинговая, реальный выигрыш зависит от разреженности модели после прунинга.
Конкуренты: AMD CDNA (MI300X) — матричные инструкции MFMA, поддержка FP8, BF16, INT8. Intel Gaudi / Ponte Vecchio — XMX-движки, ориентированы на BF16/FP8. Google TPU v5e — 197 TFLOPS BF16, оптимизирован под JAX/XLA.
Для инференса ключевая метрика — INT8 TOPS и FP8 TFLOPS. H100 декларирует до 3958 TOPS INT8 (спарсность). Но реальная пропускная способность ограничена HBM3/E (3.35 TB/s на H100 SXM). Вычислительная плотность выросла быстрее, чем bandwidth — классическая «стена памяти».
При сравнении ускорителей для LLM смотрите на FP8/BF16 Tensor TFLOPS без спарсности и на HBM bandwidth. Соотношение Compute / Bandwidth (ops/byte) определит, упретесь ли вы в расчёты или в память. Для LLM инференс почти всегда memory-bound.
Как измеряют реальную производительность: за пределами Linpack
Один Linpack недостаточен. Индустрия использует набор бенчмарков:
- 🔬 HPCG (High Performance Conjugate Gradients) — разрежённые матрицы, нерегулярный доступ к памяти. Эффективность систем на HPCG обычно 1–3 % от Rpeak.
- 🧠 MLPerf Training / Inference — эталонные модели (ResNet-50, BERT, GPT-3, DLRM, Stable Diffusion). Показывает время до конвергенции и пропускную способность инференса.
- ⚙️ SPEChpc 2021 — набор прикладных кодов (LAMMPS, NAMD, WRF, OpenFOAM). Ближе к реальной нагрузке HPC-центров.
- 💾 STREAM Triad — чистая пропускная способность памяти (Copy, Scale, Add, Triad). Предсказатель для memory-bound задач.
Для одиночного GPU/CPU можно запустить HPL локально. Пример запуска через MPI (OpenMPI + OpenBLAS):
mpirun -np 4 --map-by ppr:1:socket:PE=8 \
xhpl -f HPL.dat
Файл HPL.dat задаёт размеры блоков (NB), сетку процессов (P×Q) и размер матрицы N. Подбор параметров — отдельная наука; автотюнеры вроде AutoHPL или xhpl-ai (для тензорных ядер) упрощают жизнь.
☑️ Минимальный набор замеров перед покупкой кластера
Энергопотребление и тепловыделение: скрытые ограничители
Экзафлопсная система Frontier потребляет ~21 МВт (включая охлаждение) при Rmax 1.1 EFLOPS. Это ~52 GFLOPS/W. Для сравнения: человеческий мозг оценивается в ~10¹⁶–10¹⁷ операций при ~20 Ватт — 500–5000 PFLOPS/W. Кремний отстаёт на 8–10 порядков энергоэффективности.
Основные потери: утечки в транзисторах (static power), динамическое переключение (CV²f), перемещение данных (DRAM access ~100–500 пДж/бит vs ALU op ~1 пДж). Data movement — главный враг. Архитектуры с near-memory computing (HBM, 3D-стакинг, CXL.mem) и аналоговые/ин-мемори вычисления пытаются решить проблему.
Жидкостное охлаждение (direct-to-chip, immersion) становится обязательным для плотностей >50 кВт/стойку. Frontier использует теплообменники на каждом узле; температура входа воды ~32 °C, выхода ~40 °C. Это позволяет убрать чиллеры и снизить PUE (Power Usage Effectiveness) до ~1.03.
⚠️ Внимание: TDP в даташите — не предел потребления. Под нагрузкой AVX-512 / тензорными ядрами реальное потребление может превышать TDP на 15–25 % (Turbo, Power Virus). Блоки питания и VRM проектируйте с запасом 30 %.
Будущее: зеттаскал, квантовые и нейроморфные вычисления
Дорожная карта DOE (США) и EuroHPC ставит цель zettascale (10²¹ FLOPS) к 2032–2035 г. Основные вызовы: питание >100 МВт (нужны СМР — малые модульные реакторы или выделенные ГЭС), надёжность (MTBF компонентов при миллионах GPU), программные стеки для гетерогенных архитектур.
Квантовые компьютеры не измеряются в FLOPS. Их метрика — Quantum Volume, число логических кубитов, глубина цепи. Для задач химии, оптимизации, криптографии они дадут экспоненциальное ускорение, но не заменят классические FLOPS для линейной алгебры и ИИ.
Нейроморфные чипы (Intel Loihi 2, BrainScaleS-2, SpiNNaker 2) эмулируют спайковые нейронные сети. Энергоэффективность ~10⁻¹⁵ Дж/операция (ближе к биологии). Метрика — SOPS (Synaptic Operations Per Second). Пока нишевы, но перспективны для edge-ИИ и сенсорной обработки.
Классические CMOS-подходы продолжают масштабироваться: 3D-стакинг (TSMC SoIC, Intel Foveros), чиплеты (UCIe), оптические интерконнекты (CPO, OIO). Каждая генерация даёт 1.5–2× плотности вычислений. Закон Мура в исходном виде закончился, но «закон Хуанга» (производительность ИИ на ватт) пока держится.
Экзафлопс пройден, зеттафлопс — следующий рубеж. Главный ограничитель — не физика транзистора, а термодинамика и экономика энергии. Архитектуры сближения памяти и вычислений (PIM, CXL, 3D) решат проблему bandwidth wall.
Часто задаваемые вопросы (FAQ)
В чём разница между FLOPS и TOPS?
FLOPS — операции с плавающей запятой (FP64, FP32, BF16, FP8). TOPS — целочисленные операции (INT8, INT4). 1 TOPS ≈ 1 TFLOPS по масштабу, но точность и диапазон чисел принципиально разные. Для обучения нейросетей важен FP32/BF16/TF32; для квантованного инференса — INT8/FP8 TOPS.
Почему мой GPU выдаёт меньше FLOPS, чем в даташите?
Даташит указывает теоретический пик (Boost Clock × CUDA Cores × 2 FMA × SIMD). Реальность ограничена: тепловым троттлингом, питанием (Power Limit), пропускной способностью памяти, неидеальной загрузкой SM, драйверными накладными расходами. Типичная устойчивая производительность — 60–85 % от пика в FP32, 40–70 % в FP64.
Нужен ли мне FP64 (двойная точность) для ИИ?
Для обучения больших языковых моделей — нет, стандарт — BF16/TF32/FP8 с loss scaling. FP64 критичен для научных симуляций (CFD, молекулярная динамика, климат), финансового моделирования и обучения некоторых детерминированных алгоритмов. Потребительские GPU (GeForce, Radeon) имеют урезанный FP64 (1/32 или 1/64 от FP32). Профессиональные (RTX 6000 Ada, H100, MI300X) — полноскоростной FP64 (1/2 от FP32).
Что такое спарсность 2:4 и даёт ли она реальный ускор?
Структурная спарсность 2:4 означает, что в каждом блоке из 4 весов 2 принудительно обнуляются. Аппаратный движок пропускает умножение на ноль. Теоретический пик растёт в 2×. Реальный выигрыш — 1.2–1.6× при условии, что модель после прунинга сохраняет точность. Требует поддержки фреймворком (PyTorch, TensorRT, JAX) и переобучения/калибровки.
Как выбрать систему под конкретную задачу: HPC или ИИ?
HPC (FP64, память на ядро, MPI-масштабируемость) → CPU AMD EPYC (Genoa/Bergamo) + GPU с полным FP64 (H100, MI300X, A100). ИИ обучение (BF16/FP8, tensor parallelism, NVLink/Infinity Fabric) → плотные GPU-серверы (HGX H100 8-GPU, MI300X 8-GPU) с высоким NVLink bandwidth (900 GB/s). ИИ инференс (INT8/FP8, latency/throughput) → L40S, H100 PCIe, Gaudi2/3, TPU v5e — с акцентом на стоимость за 1M токенов.