0.5.0
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 🐛
- Support Volta+ arch in custatevec backend by @1tnguyen in #696
- Fix bug with unwind lowering. by @schweitzpgi in #744
- Fix incorrect handling of measurements in value semantics representation by @schweitzpgi in #752
- Fix #781: Handle loops that include mid-circuit measurements by @schweitzpgi in #787
- Legalization error in basis conversion. by @schweitzpgi in #794
- Better error messages for unsupported statements in kernels by @bmhowe23 in #808
- Fix logical
&&
operator in__qpu__
kernels by @bmhowe23 in #811 - Fix bug in loop normalization. by @schweitzpgi in #807
- Fix ternary operator in
__qpu__
kernels by @bmhowe23 in #815 - Added missing GIL-safe implementation for
pySampleAsync
by @1tnguyen in #828 - Support 2-d broadcast for observe by @1tnguyen in #829
- Fix GKE bug for quantum kernels that take with std::vector arguments by @schweitzpgi in #841
- Enable diagnostics for invalid kernel argument types. by @schweitzpgi in #844
- Fix compiler crash when casting from floating to boolean by @bmhowe23 in #852
- Fix kernel builder c_if qubit extraction bug by @anthony-santana in #857
- Fix an issue due to an ABI differences between ARM and x86 architectures by @1tnguyen in #878
Breaking Changes 🛠
- Modifying default target to be GPU, if present by @khalatepradnya in #842
- Fix broadcasting behavior and log a warning for behavior change by @schweitzpgi in #898
- Update cuQuantum version to 23.10 by @1tnguyen in #863
Documentation Updates ✏️
- Add documentation for OQC backends by @owen-oqc in #816
- Add documentation for IQM backends by @kukushechkin in #562
- Add C++ noise modeling examples to our docs by @1tnguyen in #818
- Add state class to documentation by @anthony-santana in #790
- Update install guide and fixing tutorials by @bettinaheim in #860
- Adding documentation about default target and the environment variable to override it by @khalatepradnya in #899
- Documentation for
tensornet
andtensornet-mps
backends by @1tnguyen in #871 - Add documentation and tweaks for using CUDA Quantum in DGX Cloud by @bettinaheim in #905
Other Changes
- Support vector front/back by @anthony-santana in #702
- Implement
get_state_async
for mqpu platform by @1tnguyen in #766 - Limited support for executing loops with break statements on quantum hardware backends by @schweitzpgi in #768
- Implement the combine rotation peephole optimization. by @schweitzpgi in #772
- Add support for cudaq::range(N). by @schweitzpgi in #736
- Support for additional controlled gates in python by @anthony-santana in #784
- Deprecate exp_val_z/expectation_z in favor of
expectation
by @anthony-santana in #791 - Better support for
QuakeValue
in Python by @1tnguyen in #809 - Implement a loop peeling pass. by @schweitzpgi in #824
- Create qubit-mapping pass by @boschmitt in #610
- Incorporate new qubit-mapping pass for IQM backends by @bmhowe23 in #837
- Incorporate new qubit-mapping pass for OQC backends by @bmhowe23 in #838
- Add
error_mitigation
andsharpen
configurations to IonQ backend by @splch in #470 - Allow for multiple controls and targets in rotation gates by @anthony-santana in #835
- Removing password prompt and other ergonomic changes for Docker images by @bettinaheim in #820
- Allow the environment variable to override the default target by @khalatepradnya in #877
- Publish cuda-quantum images only to NGC, removing pushes to GHCR by @bettinaheim in #900
New Contributors
- @owen-oqc made their first contribution in #780
- @Omar-ORCA made their first contribution in #515
- @khalatepradnya made their first contribution in #842
Full Changelog: 0.4.1...0.5.0
Release created by workflow 6915068190.