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:
Introduction: This home page, the Getting Started guide, and System Requirements
Libraries: cuPQC-BigInt, cuPQC-NTT, cuPQC-Hash, and cuPQC-PK – each with Features, Usage Guide, and API Reference sections
Additional: Release Notes, Security Notes, and License Agreement
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 bitsModular 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
22–224(powers of two)Support for any Custom prime field below
262Built-in BabyBear and KoalaBear primes with pre-computed primitive roots of unity for NTT sizes
210–224uint16_t,uint32_t, anduint64_tprecisions for any prime modulusMontgomery-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)