Skip to content

Releases

0.1.0

Choose a tag to compare

@wsttiger wsttiger released this 17 Aug 23:25
a55da5c

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 BlockEncoding protocol enables custom encodings to work with Walk and QSVT without 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_prep kernel 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_pyscf and chemistry.from_psi4 by @wsttiger in #24.
  • Added FCIDUMP parsing through chemistry.from_fcidump by @wsttiger in #25.

Bring Your Own Block Encoding

  • Added a double-factorized block encoding implementing the public BlockEncoding protocol 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 PauliLCU to 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

    Contributed by @wsttiger in #33.

  • 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