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 🎉
- Enable user-custom data structs in python kernels by @amccaskey in #1939
- Python support for photonic simulator target by @khalatepradnya in #2055
- Anyon technologies backend integration by @Lambdauv in #2191
- Add
dep-analysis
pass (a.k.a.features/qubit-mgmt
) by @bmhowe23 in #2163 - Noise model enhancements by @1tnguyen in #2168
- Add Clifford-only simulator (Stim) by @bmhowe23 in #2235
- One- and Two-qubit operation synthesis by @khalatepradnya in #2217
- Enable user-custom data structs in C++ kernels by @schweitzpgi in #2254
- Add multi-QPU support for the 'orca' target by @khalatepradnya in #2260
- Noise modeling updates for Stim backend by @bmhowe23 in #2258
- Fermioniq integration by @MarkusPfundstein in #2225
- CUDA 12 installer, wheels, and images by @bettinaheim in #2187
- Adding
quera
backend by @khalatepradnya in #2358 - Dynamics backend for modeling of physical systems
Bug Fixes 🐛
- Fix memory leaks in Python JIT cache by @bmhowe23 in #2059
- Follow-up to #1603 - fix
kronprod
bug occurring with Nvidia simulators by @bmhowe23 in #2077 - Add dynamic tuple layout handling by @schweitzpgi in #2109
- Fixes bug in lower to cfg by @schweitzpgi in #2113
- Fix intermittent shutdown warning message by @bmhowe23 in #2130
- Fix missing import of crx by @ikkoham in #2142
- Fix runtime bug for span qview access where the span is of length 1 by @annagrin in #2149
- Fixes a bug in handling of small structs by @schweitzpgi in #2166
- Fix calling convention differences between libstdc++ and libc++ by @schweitzpgi in #2188
- Fix argument conversion issues by @annagrin in #2211
- Fix exp_pauli issues on remote simulators and quantum devices by @annagrin in #2226
- Fixes a bug with separate compilation by @schweitzpgi in #2264
- Fix argument passing issue in C++ bridge by @schweitzpgi in #2266
- Fix mid-circuit measurement if reset follows measurement by @bmhowe23 in #2275
- Fix various bugs when processing the host-side functions and the by @schweitzpgi in #2268
- Add support for aarch64 calling conventions by @schweitzpgi in #2278
- Fix
spin_op
multiplication. by @boschmitt in #2292 - Bug fixes for multi-GPU statevector simulator by @1tnguyen in #2313
- Fix issues with
state.from_data
bindings by @1tnguyen in #2312 - Fix incorrect call return for python device kernels by @annagrin in #2319
- Fix state retrieval logic for
tensornet
by @khalatepradnya in #2353
Breaking Changes 🛠
- CUDA 11 and CUDA 12 tags for Docker image and cuQuantum version update by @bettinaheim in #2333
- Python package name changes and metapackage by @bettinaheim in #2356
Documentation Updates ✏️
- New Tutorial - Divisive Clustering by @mawolf2023 in #1990
- Add
get_state_async
examples to themqpu
platform docs by @1tnguyen in #2063 - Correctly specify the used convention in noise channel docs by @anthony-santana in #2023
- Adding AFQMC tutorial by @zohimchandani in #1844
- Update Hadamard test tutorial by @ikkoham in #1972
- Quantum Filter diagonalization by @marwafar in #1997
- Added notebooks on Shor's algorithm by @mmvandieren in #2070
- Add clarification about setting env vars prior to setting target by @bmhowe23 in #2173
- New tutorial: unitary compilation using diffusion models by @zohimchandani in #2172
- Updates to Shor's algorithm notebook by @mmvandieren in #2178
- Random walk phase estimation example in Python #1579 by @Gaurang-Belekar in #2060
- Restructure of examples and applications by @zohimchandani in #2218
- Add the documentation of anyon tech backend by @Lambdauv in #2281
- Changing documentation and defaults to reflect the CUDA 12 builds/packages by @bettinaheim in #2374
Other Changes
- Add cudaq::draw support for hardware targets by @bmhowe23 in #2042
- Support more numpy constants in quantum kernels by @freifrauvonbleifrei in #1756
- Implement argument conversions as a runtime library by @schweitzpgi in #2040
- Update factor-quantum-alloc to handle subveqs better by @bmhowe23 in #2047
- Add support for kernel return values by @schweitzpgi in #2082
- Update regtomem to handle more cases by @schweitzpgi in #2135
- Update decomposition patterns for value semantics by @bmhowe23 in #2145
- CMake targets and other improvements for downstream projects by @amccaskey in #2014
- Allow state synthesis for remote simulators by @annagrin in #2212
- Separate compilation, supporting C++ host side function references. by @schweitzpgi in #2216
- Add enumerated noise_model_type to noise interface by @bmhowe23 in #2200
- ORCA asynchronous sampling by @Omar-ORCA in #2205
- Update Stim backend to support conditionals and mid-circuit measurements by @bmhowe23 in #2270
- Enable Python/C++ interop via exposed JIT functionality by @amccaskey in #2214
- Modify the launchers to support returning results. by @schweitzpgi in #2277
- Add new gates to Photonics simulator by @Omar-ORCA in #2289
- Add Braket backend by @rmshaffer in #2337
- OQC client upgrade by @jfriel-oqc in #2352
New Contributors
- @mawolf2023 made their first contribution in #1990
- @AishSweety made their first contribution in #2089
- @wahorvat made their first contribution in #2127
- @Lambdauv made their first contribution in #2191
- @MarkusPfundstein made their first contribution in #2225
- @rmshaffer made their first contribution in #2337
Full Changelog: 0.8.0...0.9.0
Release created by workflow 11916810007.