Get Started
Install cuPQC and compile your first device-side kernel, from SDK download through link-time optimization. Prerequisites are on the right; full guides and sample applications are linked below.
Set CUPQC_SDK_DIR to the extracted directory so your builds find the headers and libraries.
If unset, applications look for the SDK at /usr/local/cupqc-sdk. Add the export to your shell profile to make it persistent.
Check that the SDK headers are in place.
cuPQC is device-side: include a header, declare a descriptor, and call it inside your kernel. Here is SHA-256 over a message:
#include <hash.hpp>
using namespace cupqc;
using SHA256 = decltype(SHA2_256() + Thread());
__global__ void hash_kernel(uint8_t* digest,
const uint8_t* msg, size_t len) {
SHA256 hash {};
if (threadIdx.x == 0) {
hash.reset();
hash.update(msg, len);
hash.finalize();
hash.digest(digest, SHA256::digest_size);
}
}
The SDK uses link-time optimization. Build with -dlto and your GPU architecture (sm_70 through sm_90).
nvcc -std=c++17 -dlto -arch=sm_90 \
-I$CUPQC_SDK_DIR/include \
-L$CUPQC_SDK_DIR/lib -lcupqc-hash \
your_program.cu -o your_program
Prefer CMake? The SDK ships config files — use find_package(cupqc) and link cupqc-hash_static or cupqc-pk_static.