Recent Releases of cudaq-qec

cudaq-qec - 0.4.0

The CUDA-QX 0.4.0 release includes a variety of new features in both the Solvers and QEC library. For the Solvers library, a new Generative Quantum Eigensolver implementation is provided. To use this new algorithm, you will need to use pip install cudaq-solvers[gqe] in order to install all the proper dependencies. For the QEC library, a new Tensor Network Decoder is added, and a new API allows users to automatically generate PCMs from noisy CUDA-Q memory circuits. To use this new decoder, you will need to a) use Python >= 3.11, and b) use pip install cudaq-qec[tensor_network_decoder] in order to install all the proper dependencies. Additionally, support for Python 3.13 is added in this release. Many more features are listed below!

Please check out the docs and examples for how to get started using the CUDA-QX libraries!

Note: CUDA-QX 0.4.0 depends on CUDA-Q 0.12.0.

Features and Enhancements (Solvers) 🎉

  • Generative Quantum Eigensolver by @melody-ren in https://github.com/NVIDIA/cudaqx/pull/201

Features and Enhancements (QEC) 🎉

  • Tensor Network Decoder by @npancotti in https://github.com/NVIDIA/cudaqx/pull/179
  • Add check for tn decoder import by @melody-ren in https://github.com/NVIDIA/cudaqx/pull/206
  • Add Parity Check Matrix generation and utility functions by @bmhowe23 in https://github.com/NVIDIA/cudaqx/pull/147
  • Add opt_results field to decoder_result by @melody-ren in https://github.com/NVIDIA/cudaqx/pull/171
  • Optimize convert_vec_soft_to_tensor_hard by 50x by @bmhowe23 in https://github.com/NVIDIA/cudaqx/pull/160

Breaking Changes (QEC) 🛠

  • Update QEC interfaces to use spinopterm by @bmhowe23 in https://github.com/NVIDIA/cudaqx/pull/165

Bug Fixes (QEC) 🐛

  • Add fine grained noise injection in a custom qec code by @kvmto in https://github.com/NVIDIA/cudaqx/pull/227

nv-qldpc-decoder Updates (Closed Source)

  • Added multiple algorithm configuration updates, including iter_per_check, clip_value, bp_method (now supporting both sum-product and min-sum), scale_factor, and an optional output result logging capability for bp_llr_history.
    • Add API doc update for BP by @melody-ren https://github.com/NVIDIA/cudaqx/pull/243

Documentation ✏️

  • Replace PCM generation example with one using new DEM API by @kvmto in https://github.com/NVIDIA/cudaqx/pull/216
  • introduction.rst: clean up docs typos by @mitchdz in https://github.com/NVIDIA/cudaqx/pull/163
  • Update doc and example to use decoder_result new API by @melody-ren in https://github.com/NVIDIA/cudaqx/pull/175
  • Update examples to show how to use decoder_result API by @melody-ren in https://github.com/NVIDIA/cudaqx/pull/184
  • [docs] Update circuit-level noise example to use new DEM feature by @bmhowe23 in https://github.com/NVIDIA/cudaqx/pull/199
  • Fix typo in Building.md by @melody-ren in https://github.com/NVIDIA/cudaqx/pull/209
  • Doc update by @melody-ren in https://github.com/NVIDIA/cudaqx/pull/213
  • Tensor network decoder docs & examples by @npancotti in https://github.com/NVIDIA/cudaqx/pull/214
  • Update Python READMEs to describe optional features by @bmhowe23 in https://github.com/NVIDIA/cudaqx/pull/236
  • small fix in gqe docstring by @caldwellshane in https://github.com/NVIDIA/cudaqx/pull/239
  • Update docs and guard for tensor network decoder by @melody-ren in https://github.com/NVIDIA/cudaqx/pull/241

Common / Misc

  • Add python 3.13 support by @melody-ren in https://github.com/NVIDIA/cudaqx/pull/222
  • [nfc] Be more explicit about extension_point usage by @bmhowe23 in https://github.com/NVIDIA/cudaqx/pull/177
  • Add move constructor to heterogeneous_map by @melody-ren in https://github.com/NVIDIA/cudaqx/pull/186
  • Remove unnecessary MeasureCounts.h include by @1tnguyen in https://github.com/NVIDIA/cudaqx/pull/188
  • Update restrict pointer syntax to allow compilation with clang++ by @bmhowe23 in https://github.com/NVIDIA/cudaqx/pull/205
  • Update cudaq ver for project.toml by @melody-ren in https://github.com/NVIDIA/cudaqx/pull/219
  • Fix decoder plugin not throwing the missing dependecy err msg issue by @melody-ren in https://github.com/NVIDIA/cudaqx/pull/224
  • Update pyproject.toml dependencies for CUDA-Q 0.12 by @bmhowe23 in https://github.com/NVIDIA/cudaqx/pull/228
  • Add missing licence header by @melody-ren in https://github.com/NVIDIA/cudaqx/pull/235

Testing

  • Workflow updates (incl creating alllibsrelease.yaml) by @bmhowe23 in https://github.com/NVIDIA/cudaqx/pull/159
  • [test] Skip nv-qldpc-decoder test if no GPUs found by @bmhowe23 in https://github.com/NVIDIA/cudaqx/pull/238
  • Add python3.13 to validate_wheels.sh by @melody-ren in https://github.com/NVIDIA/cudaqx/pull/237

New Contributors

  • @mitchdz made their first contribution in https://github.com/NVIDIA/cudaqx/pull/163
  • @1tnguyen made their first contribution in https://github.com/NVIDIA/cudaqx/pull/188
  • @npancotti made their first contribution in https://github.com/NVIDIA/cudaqx/pull/179

Full Changelog: https://github.com/NVIDIA/cudaqx/compare/0.3.0...0.4.0

- C++
Published by bmhowe23 11 months ago

cudaq-qec - 0.3.0

The CUDA-QX 0.3.0 release includes updates for CUDA-Q breaking changes (spin ops) and notable performance improvements to our nv-qldpc-decoder. Some of these improvements reduce our average OSD-0 processing by >6X, so try it out!

For details on the breaking changes, see the descriptions in in PRs below along with the associated CUDA-Q PRs: * https://github.com/NVIDIA/cuda-quantum/pull/2710 * https://github.com/NVIDIA/cuda-quantum/pull/2817

Please check out the docs and examples for how to get started using the CUDA-QX libraries!

What's Changed (Solvers)

  • UCCSD operator pool correction and integration in adapt simulator by @kvmto in https://github.com/NVIDIA/cudaqx/pull/65
  • Update libraries for cudaq::spin_op breaking changes by @bmhowe23 in https://github.com/NVIDIA/cudaqx/pull/134
  • Update libraries for Python spin op breaking changes by @bmhowe23 in https://github.com/NVIDIA/cudaqx/pull/152
  • Add __version__ info to packages by @bmhowe23 in https://github.com/NVIDIA/cudaqx/pull/154

What's Changed (QEC)

  • Update libraries for cudaq::spin_op breaking changes by @bmhowe23 in https://github.com/NVIDIA/cudaqx/pull/134
  • Update libraries for Python spin op breaking changes by @bmhowe23 in https://github.com/NVIDIA/cudaqx/pull/152
  • Correcting syndromes per shot in circuit-level example by @justinlietz in https://github.com/NVIDIA/cudaqx/pull/136
  • Add __version__ info to packages by @bmhowe23 in https://github.com/NVIDIA/cudaqx/pull/154

nv-qldpc-decoder Updates (Closed Source)

  • OSD solver ARM performance improvements by @melody-ren
  • Add Gaussian elimination to OSD with early exit @melody-ren
  • Fix numerical stability bug with BP by @bmhowe23

Documentation

  • Update install guide to clarify usage with no GPUs available by @bmhowe23 in https://github.com/NVIDIA/cudaqx/pull/143

Testing

  • Add testcases for libs/core to improve the code coverage rate by @caiyunh in https://github.com/NVIDIA/cudaqx/pull/153

New Contributors

  • @caiyunh made their first contribution in https://github.com/NVIDIA/cudaqx/pull/153

Note: CUDA-QX 0.3.0 depends on CUDA-Q 0.11.0.

Full Changelog: https://github.com/NVIDIA/cudaqx/compare/0.2.1...0.3.0

- C++
Published by bmhowe23 about 1 year ago

cudaq-qec - 0.2.1

What's Changed

This a is a minor patch release to fix 1 important bug and add 1 important set of error checks. Both of these changes are related the QEC decoders.

  • Fix bug in nv-qldpc-decoder where exhaustive search OSD was not searching over the correct candidate bitstrings.
  • Add error checking before constructing internal structures from Python data by @bmhowe23 https://github.com/NVIDIA/cudaqx/pull/141

Note: CUDA-QX 0.2.1 depends on CUDA-Q 0.10.0 (same as CUDA-QX 0.2.0).

Full Changelog: https://github.com/NVIDIA/cudaqx/compare/0.2.0...0.2.1

- C++
Published by bmhowe23 about 1 year ago

cudaq-qec - 0.2.0

This release of the CUDA-QX libraries adds support for arm64 / aarch64 platforms for both the QEC and Solvers libraries.

CUDA-QX is a collection of libraries that build upon the CUDA-Q programming model to enable the rapid development of hybrid quantum-classical application code leveraging state-of-the-art CPUs, GPUs, and QPUs. It provides a collection of C++ libraries and Python packages that enable research, development, and application creation for use cases in quantum error correction and hybrid quantum-classical solvers.

Please check out the docs and examples for how to get started using the CUDA-QX libraries!

Note: CUDA-QX 0.2.0 depends on CUDA-Q 0.10.0.

What's Changed for QEC

This release includes a new high-performance GPU-accelerated QLDPC decoder implementation based on the algorithms described in Decoding Across the Quantum LDPC Code Landscape. This new decoder requires an NVIDIA GPU. Additionally, this release includes performance improvements in the sample_memory_circuit by utilizing CUDA-Q's new "explicit measurements" feature to accelerate collection of noisy syndrome data when using the stim target.

Features and Enhancements 🎉

  • Introduce the new nv-qldpc-decoder, a GPU-accelerated decoder of the Belief Propagation and Ordered Statistics Decoding algorithms described in https://arxiv.org/abs/2005.07016.
  • Make DecoderResult tuple-like in python by @melody-ren in https://github.com/NVIDIA/cudaqx/pull/16
  • Add Surface Code by @justinlietz in https://github.com/NVIDIA/cudaqx/pull/7
  • First shot memory by @justinlietz in https://github.com/NVIDIA/cudaqx/pull/61
  • Add python binding for decoder APIs by @melody-ren in https://github.com/NVIDIA/cudaqx/pull/68
  • Use explicit measurements for memory circuit experiments by @bmhowe23 in https://github.com/NVIDIA/cudaqx/pull/89
  • Support vector types for kwargs by @bmhowe23 in https://github.com/NVIDIA/cudaqx/pull/99

Bug Fixes 🐛

  • Fix undefined behavior in cudaq::qec::to_parity_matrix by @bmhowe23 in https://github.com/NVIDIA/cudaqx/pull/87

Breaking Changes 🛠

  • Change default decoder float type to double by @bmhowe23 in https://github.com/NVIDIA/cudaqx/pull/31
  • Update API name: decode_multi to decode_batch by @melody-ren in https://github.com/NVIDIA/cudaqx/pull/102

Documentation Updates ✏️

  • Update docs to clarify Python wheels installation requirements by @bmhowe23 in https://github.com/NVIDIA/cudaqx/pull/34
  • [docs] Update old reference to steane_lut decoder by @bmhowe23 in https://github.com/NVIDIA/cudaqx/pull/39
  • Add an example of loading a decoder .so by @melody-ren in https://github.com/NVIDIA/cudaqx/pull/42
  • Update API documentation by @melody-ren in https://github.com/NVIDIA/cudaqx/pull/71
  • Add expressive noise model example by @melody-ren in https://github.com/NVIDIA/cudaqx/pull/123
  • Use new CUDA-Q noise models in examples by @bmhowe23 in https://github.com/NVIDIA/cudaqx/pull/120
  • [docs] Decoder API clarification by @bmhowe23 in https://github.com/NVIDIA/cudaqx/pull/126

Other Changes

  • Update core header files to support C++17 as well by @bmhowe23 in https://github.com/NVIDIA/cudaqx/pull/27
  • Add CUDA build support to libraries by @bmhowe23 in https://github.com/NVIDIA/cudaqx/pull/32
  • Remove CUDA-Q patch that is no longer needed by @bmhowe23 in https://github.com/NVIDIA/cudaqx/pull/48
  • Update CI for arm64 build by @bmhowe23 in https://github.com/NVIDIA/cudaqx/pull/54
  • Update test CMakeLists.txt for upstream CUDA-Q change by @bmhowe23 in https://github.com/NVIDIA/cudaqx/pull/93
  • Update CUDA-Q build patch by @bmhowe23 in https://github.com/NVIDIA/cudaqx/pull/95
  • Test examples in workflow by @melody-ren in https://github.com/NVIDIA/cudaqx/pull/112

What's Changed for Solvers

In addition to arm64 / aarch64 support, this release includes a support for the Bravyi-Kitaev transformation.

Features and Enhancements 🎉

  • Add a get_operator_pool function in C++ to mirror the Python by @amccaskey in https://github.com/NVIDIA/cudaqx/pull/13
  • Add an option to set the tolerance for jordan_wigner by @melody-ren in https://github.com/NVIDIA/cudaqx/pull/23
  • Bravyi-Kitaev implementation by @wsttiger in https://github.com/NVIDIA/cudaqx/pull/35
  • Support vector types for kwargs by @bmhowe23 in https://github.com/NVIDIA/cudaqx/pull/99

Bug Fixes 🐛

  • Fix signed int overflow in uccsd by @annagrin in https://github.com/NVIDIA/cudaqx/pull/64
  • Refactoring and debugging of Jordan Wigner transform (Issue #67) by @kvmto in https://github.com/NVIDIA/cudaqx/pull/82

Breaking Changes 🛠

Documentation Updates ✏️

  • Update docs to clarify Python wheels installation requirements by @bmhowe23 in https://github.com/NVIDIA/cudaqx/pull/34
  • Update API documentation by @melody-ren in https://github.com/NVIDIA/cudaqx/pull/71

Other Changes

  • Update core header files to support C++17 as well by @bmhowe23 in https://github.com/NVIDIA/cudaqx/pull/27
  • Add CUDA build support to libraries by @bmhowe23 in https://github.com/NVIDIA/cudaqx/pull/32
  • Remove CUDA-Q patch that is no longer needed by @bmhowe23 in https://github.com/NVIDIA/cudaqx/pull/48
  • Update CI for arm64 build by @bmhowe23 in https://github.com/NVIDIA/cudaqx/pull/54
  • Update test CMakeLists.txt for upstream CUDA-Q change by @bmhowe23 in https://github.com/NVIDIA/cudaqx/pull/93
  • Update CUDA-Q build patch by @bmhowe23 in https://github.com/NVIDIA/cudaqx/pull/95
  • Test examples in workflow by @melody-ren in https://github.com/NVIDIA/cudaqx/pull/112

New Contributors

  • @boschmitt made their first contribution in https://github.com/NVIDIA/cudaqx/pull/8
  • @amccaskey made their first contribution in https://github.com/NVIDIA/cudaqx/pull/13
  • @melody-ren made their first contribution in https://github.com/NVIDIA/cudaqx/pull/16
  • @bmhowe23 made their first contribution in https://github.com/NVIDIA/cudaqx/pull/18
  • @wsttiger made their first contribution in https://github.com/NVIDIA/cudaqx/pull/35
  • @justinlietz made their first contribution in https://github.com/NVIDIA/cudaqx/pull/7
  • @annagrin made their first contribution in https://github.com/NVIDIA/cudaqx/pull/64
  • @kvmto made their first contribution in https://github.com/NVIDIA/cudaqx/pull/82
  • @caldwellshane made their first contribution in https://github.com/NVIDIA/cudaqx/pull/117

Full Changelog: https://github.com/NVIDIA/cudaqx/compare/0.1.0...0.2.0

- C++
Published by bmhowe23 over 1 year ago

cudaq-qec - 0.1.0

This is the initial release of the CUDA-QX libraries! CUDA-QX is a collection of libraries that build upon the CUDA-Q programming model to enable the rapid development of hybrid quantum-classical application code leveraging state-of-the-art CPUs, GPUs, and QPUs. It provides a collection of C++ libraries and Python packages that enable research, development, and application creation for use cases in quantum error correction and hybrid quantum-classical solvers. Please check out the docs and examples for how to get started using the CUDA-QX libraries!

Note: CUDA-QX 0.1.0 depends on CUDA-Q 0.9.0.

- C++
Published by bmhowe23 over 1 year ago