NVIDIA добавила в CUDA 13.3 инструкцию clmad для ускорения криптографии на GPU

В CUDA 13.3 появилась PTX-инструкция clmad для аппаратного умножения без переносов на GPU NVIDIA Ampere и новее. Этот примитив важен для GHASH в AES-GCM, кодов коррекции ошибок и протоколов доказательств с нулевым разглашением; в тестах NVIDIA он ускорил GHASH на B200 до 18,8 раза по сравнению с реализацией на побитовых операциях.

NVIDIA описала в CUDA 13.3 поддержку clmad — новой PTX-инструкции для умножения без переносов с накоплением. PTX ISA 9.3 определяет варианты clmad.lo.u64 и clmad.hi.u64: операция умножает два 64-битных операнда, выбирает младшие или старшие 64 бита 128-битного результата и добавляет накопитель через XOR; для аппаратного выполнения требуется GPU с sm_80 или выше.

Carryless-умножение используется в арифметике бинарных полей, от которой зависят GHASH в AES-GCM, коды CRC, Reed–Solomon и BCH, а также ряд схем постквантовой криптографии и протоколов доказательств с нулевым разглашением. Для GPU NVIDIA это закрывает разрыв с x86, где отдельная инструкция для такой операции давно применялась прежде всего в AES-GCM.

В тестах NVIDIA версия GHASH на clmad достигла около 1,3 ТБ/с на GeForce RTX 5090 и около 6,3 ТБ/с на B200; на B200 это до 18,8 раза быстрее bitsliced-реализации. Для протокола sum-check над GF(2^128) ускорение составило 3–4 раза на RTX 5090 и до 13 раз на B200.

Сравнение пропускной способности GHASH с CLMAD и bitsliced-реализацией на NVIDIA GeForce RTX 5090 и B200

Сравнение задержки протокола sum-check с CLMAD и bitsliced-реализацией на NVIDIA GeForce RTX 5090 и B200

Практически это важно для CUDA-ядeр, которые переносят криптографию, проверяемые вычисления или кодирование ошибок в GPU-конвейеры: базовый примитив теперь можно использовать через inline PTX на системах Ampere и новее.

Источник: developer.nvidia.com

Связь с редакцией