Repository navigation
CUDA-Q Algorithms 0.1.0
CUDA-Q Algorithms 0.1.0 is the first release of a primitive-first library for building fault-tolerant quantum computing (FTQC) programs with CUDA-Q.
The library provides reusable CUDA-Q kernels for block encoding, qubitization, quantum singular value transformation (QSVT), Hamiltonian simulation, and state preparation, together with fermion transforms and chemistry preprocessing tools.
CUDA-Q Algorithms is implemented entirely in Python. Quantum primitives are exposed as @cudaq.kernel functions and kernel factories, while classical preprocessing uses NumPy and SciPy with optional CuPy acceleration. The package is distributed as a single CUDA-agnostic py3-none-any wheel.
Highlights
- Composable FTQC primitives: Build programs from Pauli LCU block encodings, qubitization walks, QSVT transformations, and Suzuki–Trotter product formulas. Kernel factories compose with one another and with user-defined CUDA-Q kernels.
- Extensible block encodings: The structural
BlockEncodingprotocol enables custom encodings to work withWalkandQSVTwithout inheritance or registration. A complete double-factorized encoding demonstrates the protocol in a worked example validated by CI. - Chemistry workflows: Convert PySCF, Psi4, or FCIDUMP data into inputs for fermion transforms, double factorization, block encoding, and state preparation.
- Independent validation: Quantum primitives are checked against independently constructed dense references, and all documentation examples execute and verify their results in CI.
Quantum Algorithm Primitives
- Added Pauli LCU block encoding, qubitization walks, Chebyshev-moment measurement, and QSVT phase-sequence application by @wsttiger in #12.
- Added Suzuki–Trotter Hamiltonian simulation with first-, second-, and fourth-order product formulas by @wsttiger in #13.
- Added
state_prepkernel injection across the primitive factories. Passing a(qubits: cudaq.qview)kernel produces a zero-argument, hardware-shaped circuit by @wsttiger in #14.
Fermion Transforms and State Preparation
- Added pure-Python Jordan–Wigner and Bravyi–Kitaev fermion-to-qubit transforms by @wsttiger in #15.
- Added UCC-family ansatz kernels, excitation operator pools, Hartree–Fock references, and fixed-parameter UCC products by @wsttiger in #17 and #20.
- Added Givens-rotation preparation of Slater determinants using a linear-depth adjacent-rotation schedule by @wsttiger in #19.
Chemistry and Classical Preprocessing
- Added pure-Python double factorization of two-electron integrals, including X-DF and compressed C-DF/RC-DF methods, with optional CuPy acceleration by @wsttiger in #18.
- Connected double-factorized integrals to the LCU, qubitization, and QSVT primitives by @wsttiger in #21.
- Added molecular-integral extraction from PySCF and Psi4 through
chemistry.from_pyscfandchemistry.from_psi4by @wsttiger in #24. - Added FCIDUMP parsing through
chemistry.from_fcidumpby @wsttiger in #25.
Bring Your Own Block Encoding
- Added a double-factorized block encoding implementing the public
BlockEncodingprotocol by @wsttiger in #22. - Expanded and relocated the implementation into a complete protocol example, including a PySCF molecule menu and an RC-DF comparison, in #26.
Notable Fixes
- Corrected the package version reported by installed wheels by @kaiqiy-nv in #28.
- Corrected UCCSD double-excitation circuits for interleaved open-shell references with spin greater than or equal to 2 by @kaiqiy-nv in #29.
- Updated
PauliLCUto infer register width from the operator’s qubit extent while correctly handling scalar identity terms by @kaiqiy-nv and @wsttiger in #30. - Included the first-factor eigenvalue scale when truncating second factors, preventing silent over-truncation on the eigendecomposition path, by @kaiqiy-nv in #31.
- Updated the FCIDUMP parser to reject unterminated headers and inputs containing no integral records instead of returning a zero Hamiltonian by @kaiqiy-nv in #32 and #34.
Documentation
-
Added a Sphinx documentation site with:
- A seven-example learning path, progressing from block encoding to a QSVT linear solver
- User guides for each subsystem
- A conventions reference
- An automatically generated Python API reference
- Runnable, self-verifying examples executed in CI
-
Updated README links to render correctly on PyPI by @wsttiger in #36.
Packaging and Project Infrastructure
- Added wheel testing across Arm64 and x86 platforms with CPU and GPU configurations, and consolidated packaging into a single CUDA-agnostic wheel, by @wsttiger in #23.
- Added the project license, NOTICE file, and DCO contribution policy by @anjbur in #27.
- Added pull-request checks and CI cache handling by @wsttiger in #11.
New Contributors
Thank you to the contributors who helped create this first release:
Full changelog: releases/v0.1.0