NVIDIA cuPQC SDK Documentation#

NVIDIA cuPQC SDK is a set of GPU-accelerated libraries for building custom cryptographic applications. Its operations are exposed as __device__ functions, called from inside your own CUDA kernels rather than dispatched from the host, so cryptography can be fused with the surrounding GPU work and intermediate values stay in registers and shared memory instead of round-tripping through global memory. It consists of four libraries:

cuPQC-BigInt: Fixed-width unsigned multi-precision integer arithmetic

cuPQC-NTT: Forward and inverse Number Theoretic Transform (NTT)

cuPQC-Hash: Cryptographic hash functions (SHA-2, SHA-3, SHAKE, Poseidon2) and Merkle trees

cuPQC-PK: Post-quantum public key algorithms (ML-KEM and ML-DSA)

This documentation is organized into three sections:

Highlights#

cuPQC-BigInt (Multi-Precision Integer Library)#

The cuPQC-BigInt library provides:

  • Fixed-width, unsigned multi-precision integer arithmetic

  • Single-thread and warp-cooperative (TPI) execution for widths from 32 to 4096 bits

  • Modular arithmetic, modular inverse, Barrett reduction, and Montgomery-domain arithmetic

  • Double-width products from multiplication and squaring

  • Configurable error handling for division, modular reduction, and modular inverse failures

cuPQC-NTT (Number Theoretic Transform Library)#

The cuPQC-NTT library provides:

  • Forward and inverse NTT operations for transform lengths 22224 (powers of two)

  • Support for any Custom prime field below 262

  • Built-in BabyBear and KoalaBear primes with pre-computed primitive roots of unity for NTT sizes 210224

  • uint16_t, uint32_t, and uint64_t precisions for any prime modulus

  • Montgomery-domain execution with conversion helpers, plus pointwise multiply, add, and subtract in the transformed domain

  • Staged NTT decomposition for large transform sizes that exceed shared memory capacity

cuPQC-Hash (Cryptographic Hash Library)#

The cuPQC-Hash library provides:

  • SHA-2, SHA-3, SHAKE, and Poseidon2 hash functions

  • Poseidon2 over the BabyBear and KoalaBear fields, in 16- and 24-element state widths

  • Merkle Tree API for efficient proof generation and verification using hash-based tree structures

  • Single-block and multi-block Merkle tree construction, building subtrees across blocks to lower latency on large trees

cuPQC-PK (Public Key Library)#

The cuPQC-PK library provides:

  • ML-KEM and ML-DSA PQC algorithm functions designed to be embedded into CUDA kernels

  • High performance, no unnecessary data movement from and to global memory

  • Tunability, options to adjust how many threads perform the operations (BlockDim)