Contributor Docs
June 12, 2026 ยท View on GitHub
- STARK Backend
- AIR Interactions
- Metrics: Guide to metrics collected by the prover.
- GPU Memory Manager with Virtual Pool (VPMM): Spec for the GPU memory manager used by the CUDA backend.
- GKR Fractional Sumcheck Prover: Protocol and CUDA implementation of the GKR prover for logup.
Development without CUDA
The repository is a Rust workspace which includes non-default member crates openvm-cuda-* which are only meant to compile on machines with CUDA toolkit installed. On machines without CUDA toolkit, ensure that your IDE does not check all crates in the workspace by adding the following to your IDE settings file (e.g., .vscode/settings.json):
{
"rust-analyzer.check.workspace": false,
}
This tells rust-analyzer to not pass --workspace to the cargo check command; the linter will still check selected crates.
Development with CUDA
The CUDA crates in this repository should build via cargo on machines with CUDA toolkit 12.8 or later installed. In addition to Rust analyzer for linting Rust code, we recommend installing a clangd server linting CUDA code: in VS Code this comes with the C/C++ extension. For the clangd server to work properly, run
python3 scripts/generate_clangd.py
once to generate a local .clangd file. This file cannot be committed to the repository as it includes local paths.
To check the version of CUDA toolkit you have installed, run
nvcc --version
Lastly, ensure that your shell profile or startup script sets the proper path variables for CUDA:
PATH=/usr/local/cuda/bin${PATH:+:${PATH}}
LD_LIBRARY_PATH=/usr/local/cuda/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
Note that /usr/local/cuda is a default symlink for the latest version of CUDA installed.
Use CUDA_LIB_DIR environment variable to specify a different CUDA library directory.