Eszközök

CUDA 13.3: NVIDIA GPUs-re beépített carryless szorzás clmad utasítással gyorsítja a bináris mező műveleteket

A főszereplő az NVIDIA és annak CUDA 13.3 kiadása, amely bevezeti a clmad PTX utasítást Ampere és újabb (SM 80+) GPU-ken.

CUDA 13.3: NVIDIA GPUs-re beépített carryless szorzás clmad utasítással gyorsítja a bináris mező műveleteket

A CUDA 13.3 bevezeti a clmad nevű PTX utasítást, amely hardveresen gyorsított carryless (átvitelnélküli) szorzást tesz elérhetővé minden NVIDIA Ampere és újabb (SM 80+) GPU-n. Ez a művelet évtizedek óta elérhető az x86 processzorokon, és alapvető szerepet játszik több kriptográfiai és kódolási feladatban — mostantól hardveresen is gyorsítható GPU-kon.

Miért fontos a carryless szorzás?

A carryless szorzás a bináris kiterjesztéses testekben (GF(2^n)) végzett szorzások egyszerűsített modellje: a bit-szorzatok összeadása XOR műveletekkel történik, nincs hagyományos átviteli (carry) bitszámítás. Ez az alapművelet megtalálható például:

  • AES-GCM integritás-ellenőrzésében (GHASH), amely a TLS, VPN és sok adatközponti titkosítási telepítés AEAD komponense;
  • tároló- és távközlési rendszerekben használt CRC és Reed–Solomon kódokban;
  • flash memóriához használt BCH kódokban;
  • kvantum stabilizátor kódoknál és több poszt-quantum kriptográfiai séma egyes elemeiben;
  • valamint modern nulla-tudás bizonyító rendszerek (például bizonyos bináris mezőkre épülő ZK rendszerek) belső ciklusaiban.

Hardveres támogatás hiányában GPU-n a fejlesztők gyakran bitslicing technikákat és más szoftveres trükköket alkalmaztak a teljesítmény javítására. A clmad bevezetése viszont natív 64×64→128 bites carryless szorzást tesz lehetővé, és .hi/.lo variánsokkal 64 bites felhalmozót is kezel.

Technikai részletek röviden

  • Az új PTX utasítás neve: clmad (carryless multiply-accumulate).
  • Működés: két 64 bites operandust carryless módon megszoroz, 128 bites eredményt ad, és egy 64 bites felhalmozóval kombinálható. A .lo és .hi formák a 128 bites eredmény alsó és felső 64 bitjét számítják.
  • Elérhetőség: minden NVIDIA GPU, amely Ampere architektúrán alapul és SM 80 vagy magasabb streaming multiprocesszor verziót használ.
  • Nagyobb mezők (például GF(2^128)) szorzásához tipikus megközelítés a Karatsuba algoritmus: két 128 bites operandus 256 bites részterméke Karatsuba-val hat clmad hívással előállítható, majd redukció történik a megfelelő irreducibilis polinom szerint.

GHASH gyorsítás — mérési eredmények

GHASH, az AES-GCM autentikációs hash komponense, teljes egészében bináris mezőbeli műveletekre támaszkodik (moduláris polinom: X^128 + X^7 + X^2 + X + 1). A clmad és a megfelelő polinomredukció együttesével a GHASH gyorsan végrehajtható a GPU-n.

Benchmarkok (példák a cikkben közölt mérésekből):

  • NVIDIA B200: GHASH csúcs-throughput körülbelül 6,335 GB/s (~6.3 TB/s), amely közel van a DRAM beolvasási sávszélességhez, és a bitsliced megoldáshoz képest akár 18.8× gyorsulást eredményez.
  • NVIDIA GeForce RTX 5090: GHASH csúcs-throughput körülbelül 1,300 GB/s, ami hozzávetőlegesen 2×-es javulás a bitsliced implementációhoz képest.

A B200 esetén a bitsliced alapverzió egyébként lassabb volt az RTX 5090-nél (kevesebb SM és alacsonyabb órajel miatt), de a clmad hardveres gyorsítása jelentősen tomboló GHASH teljesítményt hoz.

Nulla-tudás bizonyítás: sum-check protokoll gyorsítása

A sum-check protokoll alapvető építőköve sok nulla-tudás bizonyítási rendszernek. Gyakran bináris kiterjesztéses mezőben (például GF(2^128)) dolgoznak vele, különösen amikor a bizonyítandó függvények bitműveletekre épülnek. A protokoll több körön át iterál, és minden körben nagyszámú mezőbeli szorzást igényel, amelyek tökéletesen párhuzamosíthatók.

A clmad alapú mezőműveletek összehasonlítása bitsliced szoftveres megoldással (Irreducible munkája a referencia):

  • NVIDIA GeForce RTX 5090: 3–4× gyorsulás a bitsliced megoldáshoz képest.
  • NVIDIA B200: akár 13× gyorsulás mértékű javulás, a polinom- és kompozícióméretek növekedésével a relatív előny tovább nő.

( A cikk egy korábbi részében említették, hogy a sum-check teljesítmény 4–13× gyorsabb a korábbi állapothoz képest; a konkrét mérések szerint az RTX 5090-en 3–4×, a B200-on pedig legfeljebb 13× volt megfigyelhető.)

Következmények és célközönség

A clmad bevezetése átrendezi a költségszerkezetet minden olyan feladaton, amely bináris mezőműveletekre épül, különösen nagy bemeneti adatú autentikált titkosítás és nulla-tudás bizonyítások esetén. A hardveres gyorsítás már meglévő Ampere vagy újabb rendszereken rendelkezésre áll, így fejlesztők és kutatók azonnal profitálhatnak belőle.

A cikket elsősorban CUDA fejlesztőknek és kriptográfiai, valamint adatvédelmi kutatóknak címezték: azoknak, akik GPU-pipeline-okba integrálnak kriptográfiát vagy bináris mezőkre épülő protokollokat fejlesztenek.

Gyakorlati tudnivalók

  • A CUDA 13.3 telepítése javasolt a példák reprodukálásához; a PTX példák inline beilleszthetők kerneljeikbe.
  • Ampere vagy újabb GPU (SM 80+) szükséges a clmad hardveres gyorsításának kihasználásához.
  • Kriptográfiai munkákhoz érdemes megismerni a cuPQC SDK-t; telekommunikációs alkalmazásokhoz az NVIDIA Aerial dokumentáció ad támpontokat.

Összegzés

A CUDA 13.3 új PTX utasítása, a clmad, hiányzó primitívet hoz el az NVIDIA GPU-kra: a carryless szorzást. Két bemutatott példa — GHASH és a sum-check protokoll — jelentős gyorsulást mutat olyan rendszereken, mint az NVIDIA B200 és az RTX 5090. A legnagyobb nyereségek ott jelentkeznek, ahol a modern kriptográfia halad: nagybeméretű autentikált titkosítás és bináris mezőkre épülő nulla-tudás bizonyítások.