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 🎉
* Allows std::pair and std::tuple to be passed as arguments to kernels by schweitzpgi in https://github.com/NVIDIA/cuda-quantum/pull/1585
* Support for complex numbers in quantum kernels by annagrin in https://github.com/NVIDIA/cuda-quantum/pull/1605
* IQM Aphrodite QPU support by kukushechkin in https://github.com/NVIDIA/cuda-quantum/pull/1637
* Support for U3 gate by anthony-santana in https://github.com/NVIDIA/cuda-quantum/pull/1614
* Blochsphere Visualization by prateekchawla168 in https://github.com/NVIDIA/cuda-quantum/pull/1763
* Circuit diagrams for unitary quantum kernels in LaTeX by freifrauvonbleifrei in https://github.com/NVIDIA/cuda-quantum/pull/1723
* Add ORCA backends and documentation by Omar-ORCA in https://github.com/NVIDIA/cuda-quantum/pull/1842
* Support custom unitary operations by khalatepradnya in https://github.com/NVIDIA/cuda-quantum/pull/1794
Performance ⚡
* Add optimized applyExpPauli to nvidia-mgpu by bmhowe23 in https://github.com/NVIDIA/cuda-quantum/pull/1559
* Optimize kernel mode for hybrid QNN test case by bmhowe23 in https://github.com/NVIDIA/cuda-quantum/pull/1572
* State initialization feature and performance improvements related to state handling by schweitzpgi in https://github.com/NVIDIA/cuda-quantum/pull/1754
* NVQC Optimizations for VQE (C++ and Python) by bmhowe23 in https://github.com/NVIDIA/cuda-quantum/pull/1901
* Optimization for XX, YY, ZZ rotations in MPS simulator by 1tnguyen in https://github.com/NVIDIA/cuda-quantum/pull/1691
* Performance improvements for running compute APIs (state,observe,sample) in a loop by 1tnguyen in https://github.com/NVIDIA/cuda-quantum/pull/1865
* Heuristic threshold to prevent OpenMP slow-down in simple `spin_op` `*=` by 1tnguyen in https://github.com/NVIDIA/cuda-quantum/pull/1676
Bug Fixes 🐛
* Fix issue with indexing raw args pointer for return value by amccaskey in https://github.com/NVIDIA/cuda-quantum/pull/1540
* [tools] Fix segfault in `cudaq-translate` when `emit-llvm=0` by fabianmcg in https://github.com/NVIDIA/cuda-quantum/pull/1557
* Allow measurement of variadic list of qubits by amccaskey in https://github.com/NVIDIA/cuda-quantum/pull/1502
* Fix Pauli word conversion bug in `observe_async` by bmhowe23 in https://github.com/NVIDIA/cuda-quantum/pull/1567
* Fix Python wheel installation issues (multiple subtlety linked items) by bmhowe23 in https://github.com/NVIDIA/cuda-quantum/pull/1493
* Fixes and issue with sampling when kernel contains mid-circuit measurements by 1tnguyen in https://github.com/NVIDIA/cuda-quantum/pull/1619
* Fix `bool` to `int` casting issue in Python by 1tnguyen in https://github.com/NVIDIA/cuda-quantum/pull/1654
* Correctly handle 'break' within nested loops in Python by khalatepradnya in https://github.com/NVIDIA/cuda-quantum/pull/1693
* Allow math dialect to lower and run on NVQC by bmhowe23 in https://github.com/NVIDIA/cuda-quantum/pull/1692
* Segmentation fault during circuit simulation for large number of controlled gates by schweitzpgi in https://github.com/NVIDIA/cuda-quantum/pull/1735
* Bugs fixes in lower quake pass by schweitzpgi in https://github.com/NVIDIA/cuda-quantum/pull/1831
* Fix stack overflow when running with a large number of shots by bmhowe23 in https://github.com/NVIDIA/cuda-quantum/pull/1846
* Add nvidia-mqpu as a valid multi-GPU backend for NVQC by bmhowe23 in https://github.com/NVIDIA/cuda-quantum/pull/1856
* Fix bug in lower-to-cfg by schweitzpgi in https://github.com/NVIDIA/cuda-quantum/pull/1868
* Fix storage order of noise kraus ops by 1tnguyen in https://github.com/NVIDIA/cuda-quantum/pull/1825
* Address scoping issue for `sample_async` by khalatepradnya in https://github.com/NVIDIA/cuda-quantum/pull/1878
* Fix LLVM aarch64 relocation overflow by bmhowe23 in https://github.com/NVIDIA/cuda-quantum/pull/1444
* Fix bug in `memtoreg` pass with classical values in `if`s by atgeller in https://github.com/NVIDIA/cuda-quantum/pull/1905
* Fix bug for missing function declarations by schweitzpgi in https://github.com/NVIDIA/cuda-quantum/pull/1919
* Keep stack from growing without bound by schweitzpgi in https://github.com/NVIDIA/cuda-quantum/pull/1892
* Fix incorrect capture for array and list in python by annagrin in https://github.com/NVIDIA/cuda-quantum/pull/1928
* Correctly distinguish measurement result and boolean variable by khalatepradnya in https://github.com/NVIDIA/cuda-quantum/pull/1952
* Fixing an issue with copying measurement variable inside a kernel by khalatepradnya in https://github.com/NVIDIA/cuda-quantum/pull/1962
* Support use of `control` and `adjoint` variants of a kernel by khalatepradnya in https://github.com/NVIDIA/cuda-quantum/pull/1979
* Fix cudaq::slice_vector synthesis bug by bmhowe23 in https://github.com/NVIDIA/cuda-quantum/pull/1981
* Handle use of indirect `adjoint` on a `control` by khalatepradnya in https://github.com/NVIDIA/cuda-quantum/pull/1993
Breaking Changes 🛠
* Bump `cuquantum` to 24.03 and `cutensor` to 2.0 by 1tnguyen in https://github.com/NVIDIA/cuda-quantum/pull/1524
* Build and include the C++ standard library in installer by bettinaheim in https://github.com/NVIDIA/cuda-quantum/pull/1603
* Changes to cudaq headers for pure c++17 environment by schweitzpgi in https://github.com/NVIDIA/cuda-quantum/pull/1468
Documentation Updates ✏️
* Use arch-specific pip requirements and update docs by bmhowe23 in https://github.com/NVIDIA/cuda-quantum/pull/1602
* Additional tutorials and examples by zohimchandani in https://github.com/NVIDIA/cuda-quantum/pull/1702
* Added application Readout Error Mitigation by Gopal-Dahale in https://github.com/NVIDIA/cuda-quantum/pull/1765
* Improve structure and clarity of the documentation by WingCode in https://github.com/NVIDIA/cuda-quantum/pull/1724
* Add ability to set MPS SVD algorithm by 1tnguyen in https://github.com/NVIDIA/cuda-quantum/pull/1761
* Adding examples for defining kernels and inverting them (e.g. inverse QFT) by mmvandieren in https://github.com/NVIDIA/cuda-quantum/pull/1885
* Hadamard test example by marwafar in https://github.com/NVIDIA/cuda-quantum/pull/1867
* Active space example with water molecule by marwafar in https://github.com/NVIDIA/cuda-quantum/pull/1859
* Adding example about molecular docking via DC-QAOA by marwafar in https://github.com/NVIDIA/cuda-quantum/pull/1960
Other Changes
* Add cudaq.translate API by annagrin in https://github.com/NVIDIA/cuda-quantum/pull/1916
* Enable 'reset' in Python kernel mode by khalatepradnya in https://github.com/NVIDIA/cuda-quantum/pull/1649
* Add support for python's for-else by schweitzpgi in https://github.com/NVIDIA/cuda-quantum/pull/1573
* Make quantum values a linear type by schweitzpgi in https://github.com/NVIDIA/cuda-quantum/pull/1612
* nvq++ command line options by schweitzpgi in https://github.com/NVIDIA/cuda-quantum/pull/1805
* Handle unsupported operation with nvqc target by sacpis in https://github.com/NVIDIA/cuda-quantum/pull/1907
* Enable capture of opaque kernel functions by amccaskey in https://github.com/NVIDIA/cuda-quantum/pull/1934
* NVQC API versioning updates and advance REST API to v1.1 by bmhowe23 in https://github.com/NVIDIA/cuda-quantum/pull/1941
* State preparation after synthesis by annagrin in https://github.com/NVIDIA/cuda-quantum/pull/1891
* Add error message about not synthesizing state pointers by annagrin in https://github.com/NVIDIA/cuda-quantum/pull/1974
* Support direct kernel invocation with a return value by 1tnguyen in https://github.com/NVIDIA/cuda-quantum/pull/1969
New Contributors
* actione made their first contribution in https://github.com/NVIDIA/cuda-quantum/pull/1510
* Gaurang-Belekar made their first contribution in https://github.com/NVIDIA/cuda-quantum/pull/1525
* fabianmcg made their first contribution in https://github.com/NVIDIA/cuda-quantum/pull/1557
* marwafar made their first contribution in https://github.com/NVIDIA/cuda-quantum/pull/1581
* abhiram6121 made their first contribution in https://github.com/NVIDIA/cuda-quantum/pull/848
* ikkoham made their first contribution in https://github.com/NVIDIA/cuda-quantum/pull/1655
* prateekchawla168 made their first contribution in https://github.com/NVIDIA/cuda-quantum/pull/1763
* Gopal-Dahale made their first contribution in https://github.com/NVIDIA/cuda-quantum/pull/1765
* freifrauvonbleifrei made their first contribution in https://github.com/NVIDIA/cuda-quantum/pull/1723
* WingCode made their first contribution in https://github.com/NVIDIA/cuda-quantum/pull/1724
* atgeller made their first contribution in https://github.com/NVIDIA/cuda-quantum/pull/1829
* BalajiJBcs made their first contribution in https://github.com/NVIDIA/cuda-quantum/pull/1826
**Full Changelog**: https://github.com/NVIDIA/cuda-quantum/compare/0.7.1...0.8.0
Release created by workflow [10252752123](https://github.com/NVIDIA/cuda-quantum/actions/runs/10252752123).