Аппаратное ускорение GF(2^n) на GPU
NVIDIA представила инструкцию clmad (carryless multiply-accumulate) в CUDA 13.3. Это первый случай нативной аппаратной поддержки умножения в поле Галуа GF(2^n) на GPU. Инструкция доступна на всех архитектурах начиная с Ampere (sm_80) и новее. Она позволяет выполнять умножение двух 64-битных чисел в 128-битный результат без переносов, что критично для криптографии, кодов коррекции ошибок и ZK-доказательств.
GHASH: прорыв в скорости аутентификации
GHASH — ядро алгоритма AES-GCM, используемого в TLS и VPN. До CUDA 13.3 разработчикам приходилось использовать бит-слайсинг (bitslicing), что было неэффективно. С clmad производительность на NVIDIA B200 достигла 6.335 ТБ/с, что близко к пропускной способности DRAM. На GeForce RTX 5090 пиковая скорость составила ~1.300 ГБ/с.
| Платформа | Метрика | Результат с clmad | Ускорение vs Bitslicing |
|---|---|---|---|
| NVIDIA B200 | GHASH Throughput | 6.335 ТБ/с | до 18.8x |
| GeForce RTX 5090 | GHASH Throughput | ~1.300 ГБ/с | 2x |
| NVIDIA B200 | Sum-check (ZK) | Ускорение | 4–13x |
Zero-Knowledge: ускорение Sum-check протоколов
Протоколы суммирования (sum-check) — основа современных систем ZK-доказательств (например, Binius). Они требуют интенсивных вычислений в GF(2^128). Использование clmad позволяет сократить количество инструкций для умножения полиномов (алгоритм Карастубы) и ускорить выполнение сум-check протоколов в 3–13 раз. Это делает GPU-решения для ZK-доказательств значительно более рентабельными.
Широкое применение: от CRC до постквантовой криптографии
Инструкция clmad не ограничивается AES-GCM. Она ускоряет:
- Коды коррекции ошибок: CRC, Reed-Solomon, BCH (для флеш-памяти и телекома).
- Постквантовую криптографию: некоторые схемы, основанные на бинарных полях.
- Квантовые вычисления: стабилизаторные коды.
Разработчики могут использовать встроенные PTX-инструкции clmad.lo и clmad.hi для интеграции в свои ядра. Пример реализации умножения 128-битных чисел через Karatsuba занимает всего 6 инструкций clmad.
Источник: NVIDIA dev blog ↗
