Skip to content

Releases: NVIDIA/cuda-quantum

0.9.1

16 Dec 21:08
Compare
Choose a tag to compare

This release adds support for using Amazon Braket and Infeqtion's Superstaq as backends.
Starting with this release, all C++ quantum kernels will be processed by the nvq++ compiler regardless of whether they run on a simulator or on a quantum hardware backend. This change is largely non-breaking, but language constructs that are not officially supported within quantum kernels will now lead to a compilation error whereas previously they could be used when executing on a simulator only. The previous behavior can be forced by passing the --library-mode flag to the compiler. Please note that if you do so, however, the code will never be executable outside of a simulator and may not be supported even on simulators.

What's Changed

Features and Enhancements 🎉

Bug Fixes 🐛

Breaking Changes 🛠

Documentation Updates ✏️

Other Changes

  • Tensornet contraction path reuse for expectation value calculation by @1tnguyen in #2397
  • Improve binary sizes by not globing MLIR dialects/passes by @boschmitt in #2414
  • Improve performance of some opt passes by @annagrin in #2431
  • Support measurements of subveqs for braket by @annagrin in #2416
  • Support measurement sampling seed for cutensornet backends by @1tnguyen in #2398
  • Support for allocatable quantum structs by @schweitzpgi in #2432
  • Allow setting noise on measurement operation and apply it accordingly by @1tnguyen in #2447
  • MGPU updates for NVLink and bug fixes by @1tnguyen in #2424

New Contributors

Full Changelog: 0.9.0...0.9.1.
Release created by workflow 12315600791.

0.9.0

19 Nov 21:26
33dbf24
Compare
Choose a tag to compare

We are very excited to share a new toolset added for modeling and manipulating the dynamics of physical systems. The new API allows to define and execute a time evolution under arbitrary operators. For more information, we refer to our docs.
The 0.9.0 release furthermore includes a range of contribution to add new backends to CUDA-Q, including backends from Anyon Technologies, Ferimioniq, and QuEra Computing, as well as updates to existing backends from ORCA and OQC.
A more extensive list of the most important changes, as usual, is given below. We hope you enjoy the new features - also check out our new notebooks and examples to dive into CUDA-Q.

What's Changed

Features and Enhancements 🎉

Bug Fixes 🐛

Breaking Changes 🛠

Documentation Updates ✏️

Other Changes

New Contributors

Full Changelog: https://github.com/...

Read more

0.8.0

06 Aug 21:12
5f63a89
Compare
Choose a tag to compare

The 0.8.0 release adds a range of changes to improve the ease of use and performance with CUDA-Q. The changes listed below highlight some of what we think will be the most useful features and changes to know about. While the listed changes do not capture all of the great contributions, we would like to extend many thanks for every contribution, in particular those from external contributors.

What's Changed

Features and Enhancements 🎉

Performance ⚡

  • Add optimized applyExpPauli to nvidia-mgpu by @bmhowe23 in #1559
  • Optimize kernel mode for hybrid QNN test case by @bmhowe23 in #1572
  • State initialization feature and performance improvements related to state handling by @schweitzpgi in #1754
  • NVQC Optimizations for VQE (C++ and Python) by @bmhowe23 in #1901
  • Optimization for XX, YY, ZZ rotations in MPS simulator by @1tnguyen in #1691
  • Performance improvements for running compute APIs (state,observe,sample) in a loop by @1tnguyen in #1865
  • Heuristic threshold to prevent OpenMP slow-down in simple spin_op *= by @1tnguyen in #1676

Bug Fixes 🐛

Breaking Changes 🛠

Documentation Updates ✏️

Other Changes

New Contributors

Full Changelog: 0.7.1...0.8.0
Release created by workflow 10252752123.

0.7.1

21 May 15:11
1f8dd79
Compare
Choose a tag to compare

The 0.7.1 release adds bug fixes, slightly changes the Python wheel installation instructions, and adds simulator optimizations to our prior 0.7.0 release. The nvidia-mgpu backend now supports user customization of the gate fusion level as controlled by the CUDAQ_MGPU_FUSE environment variable documented here.

What's Changed

Features and Enhancements 🎉

  • Perf. improvement for CuStateVecCircuitSimulator::observe by @1tnguyen in #1002
  • Make spin_op.distribute_terms batch more efficiently by @bmhowe23 in #1437
  • MPS backend to support gates on 3+ qubits by @1tnguyen in #1420
  • Add optimized applyExpPauli to nvidia-mgpu by @bmhowe23 in #1559
  • Optimize kernel mode for hybrid QNN test case by @bmhowe23 in #1572

Bug Fixes 🐛

  • Fixing issue with sample_async failing on machines with multiple GPUs by @1tnguyen in #1379
  • Enable list[T] argument specification in kernel builder by @amccaskey in #1370
  • Fix synthesis of vectors with small integers. by @schweitzpgi in #1395
  • Fix compilation issue for std::vector in some cases by @schweitzpgi in #1402
  • Fixing incorrect error for synthesis of callables by @schweitzpgi in #1398
  • Fix memory leak in CuStateVecCircuitSimulator.cu by @bmhowe23 in #1424
  • Fix issue when passing np.ndarray to Python kernels by @amccaskey in #1406
  • Fix Python handling of kernel list parameters by @bmhowe23 in #1410
  • Fix issue with spin_op result retrieval by @1tnguyen in #1440
  • Handling empty lists passed to Python kernels by @amccaskey in #1438
  • Fix issue where qubits are retained with draw / tracer by @amccaskey in #1457
  • Fix issue caused by docstrings inside Python kernels by @amccaskey in #1459
  • Improved error handling and bug fixes for Python by @amccaskey in #1458
  • Fix issue with cnot operation not being properly compiled for some targets by @schweitzpgi in #1466
  • Simplify MLIR code generated for simple Python for loops over range(N) by @amccaskey in #1470
  • Fix Python wheel installation issues (multiple subtlety linked items) by @bmhowe23 in #1493
  • Fix observe() calls on nvidia-mgpu backend by @bmhowe23 in #1494
  • Fix issue with unknown base on attribute call (throw an error) by @amccaskey in #1499
  • Fix QPUD Library Mode Installer Build by @1tnguyen in #1435

Documentation Updates ✏️

Other Changes

  • Adds the ability to pass vector values to kernels as input by @schweitzpgi in #1404
  • Add support for recently introduced cudaq::range(a,b,c) function. by @schweitzpgi in #1476

Release created by workflow 9094817952.
GitHub commit 1f8dd79d46cad9b9bd0eb220eb04408a2e6beda4

Full Changelog: 0.7.0...0.7.1

0.7.0

18 Mar 21:55
d30a371
Compare
Choose a tag to compare

The 0.7.0 release adds support for using NVIDIA Quantum Cloud in the form of a new nvqc target, giving you access to our most powerful GPU-accelerated simulators even if you don't have an NVIDIA GPU.
With 0.7.0, we have furthermore greatly increased expressiveness of the Python and C++ language frontends. Check our our new Quick Start to get started with the new Python syntax support we have added, and follow our blog to learn more about the new setup and its performance benefits.

What's Changed

Features and Enhancements 🎉

Bug Fixes 🐛

  • Fix issue with argument checking on kernel_builder apply_call by @amccaskey in #1131
  • Don't throw fatal exception during 'import cudaq' if missing dependencies by @bmhowe23 in #1152
  • Fixes for the remote-mqpu platform by @1tnguyen in #1158
  • Fix incorrect warning for IonQ command line parameters by @bmhowe23 in #1173
  • Fix non-created custatevec handle edge case by @1tnguyen in #1160
  • Fix tensornet bug with async python functions by @amccaskey in #1177
  • Change __global__ register bit ordering for target mode to match library mode by @bmhowe23 in #1027
  • Fix issue with handling nested cudaq::adjoint by @boschmitt in #1217
  • Handle LLVM errors via C++ exceptions in the REST server implementation by @1tnguyen in #1263
  • Decode orca-url by @Omar-ORCA in #1270
  • Refresh remote seeds for executions within a client session by @1tnguyen in #1318
  • Miscellaneous bug fixes for argument and return values by @schweitzpgi in #1326

Breaking Changes 🛠

Documentation Updates ✏️

Other Changes

New Contributors

Full Changelog: 0.6.0...0.7.0
Release created by workflow 8332091498.

0.6.0

30 Jan 12:47
e0fb95f
Compare
Choose a tag to compare

The 0.6.0 release contains improved support for various HPC scenarios. We have added a plugin infrastructure for connecting CUDA Quantum with an existing MPI installation, and we've added a new platform target that distributes workloads across multiple virtual QPUs, each simulated by one or more GPUs.

Starting with 0.6.0, we are now also distributing pre-built binaries for using CUDA Quantum with C++. The binaries are built against the GNU C library version 2.28. We've added a detailed Building from Source guide to build these binaries for older glibc versions.

What's Changed

Features and Enhancements 🎉

Bug Fixes 🐛

Documentation Updates ✏️

Other Changes

New Contributors

Full Changelog: 0.5.0...0.6.0

Release created by workflow 7702894514.
GitHub commit e0fb95f99b955acca530fcedeb3acd109d9d0183

0.5.0

19 Nov 10:45
73b3f62
Compare
Choose a tag to compare

With 0.5.0 we have added support for quantum kernel execution on OQC and IQM backends. For more information, see our docs. CUDA Quantum now allows to executing adaptive quantum kernels on quantum hardware backends that support it. The 0.5.0 release furthermore improves the tensor network simulation tools and adds a matrix product state simulator.

Additionally, we are now publishing images for experimental features, which currently includes improved Python language support. Please take a look at our installation guide for more information about how to obtain them.

What's Changed

Features and Enhancements 🎉

  • Support for submission to OQC backends by @jfriel-oqc in #435
  • Support for submission to IQM backends by @kukushechkin in #468
  • Add more support for std::vector and (C style) arrays. by @schweitzpgi in #714
  • Optimized support for applying exponentials of Paulis by @amccaskey in #660
  • Additional kernels for chemistry applications by @1tnguyen in #731
  • Support for adaptive quantum kernels on (certain) quantum hardware backends by @bmhowe23 in #741
  • Adding photonics execution manager by @Omar-ORCA in #515
  • Delay measurements if necessary when targeting quantum hardware backends by @bmhowe23 in #761
  • Enable while loop normalization and unrolling by @schweitzpgi in #830
  • Support ranged for-loops when targeting quantum hardware backends by @schweitzpgi in #833
  • Enable deployments for experimental branches by @bettinaheim in #880
  • Open-source tensornet simulator and add tensornet-mps simulator backend by @1tnguyen in #863

Bug Fixes 🐛

Breaking Changes 🛠

Documentation Updates ✏️

Other Changes

New Contributors

Full Changelog: 0.4.1...0.5.0
Release created by workflow 6915068190.

0.4.1

04 Oct 17:40
Compare
Choose a tag to compare

The 0.4.1 release adds support for ARM processors in the form of multi-platform Docker images and aarch64 Python wheels. Additionally, all GPU-based backends are now included in the Python wheels as well as in the Docker image.

What's Changed

Features and Enhancements 🎉

Bug Fixes 🐛

Documentation Updates ✏️

Other Changes

New Contributors

Full Changelog: 0.4.0...0.4.1
Release created by workflow 6408359768.

0.4.0

23 Jul 16:58
b2abbaa
Compare
Choose a tag to compare

CUDA Quantum is now available on PyPI!
For the initial PyPI release, the NVIDIA multi-gpu and tensornet backends are not yet included. Check out our Docker images on NGC to obtain the fully featured version, or build it from source using the release assets.
With 0.4.0 we have added support for quantum kernel execution on Quantinuum and IonQ backends. For more information, see our docs.
As always, we welcome questions and feedback in the form of issues and discussions on this repository.

What's Changed

Features and Enhancements 🎉

Bug Fixes 🐛

Breaking Changes 🛠

Documentation Updates ✏️

  • Refer to GitHub for building from source instructions, by @bettinaheim in #40
  • Documentation update for control qubit negation by @schweitzpgi in #86
  • Fixes to common operations definitions by @boschmitt in #120
  • Update circuit simulator documentation to reflect the latest refactoring by @amccaskey in #90
  • Update the documentation to reflect the new unified dialect by @schweitzpgi in #153
  • Make the CC ops documentation more uniform. by @schweitzpgi in #150
  • [docs] Small fixes to quake dialect example by @boschmitt in #165

Other Changes

Read more

0.4.0-alpha

28 Jun 17:49
82d4a6d
Compare
Choose a tag to compare
0.4.0-alpha Pre-release
Pre-release

What's Changed

Features and Enhancements 🎉

Bug Fixes 🐛

Breaking Changes 🛠

Documentation Updates ✏️

  • Refer to GitHub for building from source instructions, by @bettinaheim in #40
  • Documentation update for control qubit negation by @schweitzpgi in #86
  • Fixes to common operations definitions by @boschmitt in #120
  • Update circuit simulator documentation to reflect the latest refactoring by @amccaskey in #90
  • Update the documentation to reflect the new unified dialect by @schweitzpgi in #153
  • Make the CC ops documentation more uniform. by @schweitzpgi in #150
  • [docs] Small fixes to quake dialect example by @boschmitt in #165

Other Changes

Read more