This release adds support for CUDA 13 and Python 3.13 and removes support for CUDA 11 and Python 3.10.
It adds support for using the CUDA-Q QEC libraries for real-time decoding on Quantinuum backends, and adds support for submission to QCI backends. Check out the release notes below to learn about additional new content.
What's Changed
Features and Enhancements 🎉
- QCI integration by @qci-opensource in #3112
- Support resource estimation on remote simulators by @atgeller in #3360
- Phase Folding Optimization by @atgeller in #3306
- Support CUDA 13 by @mitchdz in #3502
- C++ support for returning vectors of scalar types with
cudaq.runby @khalatepradnya in #3514 - Python support for returning lists of simple types from
cudaq.runby @1tnguyen in #3555 - Support
gpu_decoder_configfor Quantinuum by @1tnguyen in #3580
Bug Fixes 🐛
- Misc. bug fixes and improvements by @schweitzpgi in #3214
- Adding an error on invalid target attribute by @sacpis in #3244
- Add support for passing const references by @schweitzpgi in #3300
- Fix for issue 3239 by @schweitzpgi in #3309
- Fix failure in evolve for collapse operators by @1tnguyen in #3327
- Fix incorrect operand type conversion for some arithmetic operations in Python by @khalatepradnya in #3346
- Add missing
reset_exec_ctxcall inevolve_asyncby @1tnguyen in #3387 - Update BraketServerHelper to use ccnot instead of ccx by @jacofeld in #3418
- Fix docs typos and compiler pipeline for OQC backends by @khalatepradnya in #3441
- Automatic measurement for sample on remote targets by @khalatepradnya in #3422
- Bug fix to allow select on qubits by @bettinaheim in #3443
- Fix bug in unitary mixture calculation when the matrix values are small due to low error rate by @1tnguyen in #3465
- Fix memory leak in
Arrayallocation by @1tnguyen in #3478 - Fixing bugs in dynamics operator conversion for super-operators by @1tnguyen in #3487
registerDeviceKernelto also include function call declarations by @1tnguyen in #3501- Various Python bridge fixes and improvements by @bettinaheim in #3489
- Fixes bugs in Python argument conversion by @schweitzpgi in #3536
- Various fixes for vector support in Python by @1tnguyen in #3533
- Various fixes for dynamic kernel loading by @1tnguyen in #3507
- Fix a bug in Python
run,run_async,sample_async, andobserve_async: callableargsare dropped by @1tnguyen in #3545 - Fix bugs in apply specialization pass by @schweitzpgi in #3583
Breaking Changes 🛠
- Update the
quantinuumtarget to use Nexus service by @khalatepradnya in #3286 - Update Docker base image to Ubuntu 24.04 by @mitchdz in #3421
- Update to cuquantum 25.09 by @1tnguyen in #3436
- Add simulator and replace runtime call for resource counting by @atgeller in #3051
- Make Python sample API spec compliant by @khalatepradnya in #3452
Documentation Updates ✏️
- Docs and examples for QCI backends by @qci-opensource in #3373
- Add Quantum Machines documentation by @khalatepradnya in #3301
- New SKQD tutorial by @zohimchandani in #3439
- Add QSCI notebook by @ikkoham in #3500
- New tutorial: QM/MM implementation with PE framework by @marwafar in #3228
- Update codes for quantum chemistry examples by @marwafar in #3303
- Grouped dynamics examples by @mawolf2023 in #2900
- Consistent docs for hardware targets by @khalatepradnya in #3339
- Update gate fusion doc by @1tnguyen in #3344
- Extend the Hamiltonian generation function to add UHF by @marwafar in #3386
- Docs edits to fix ambiguities in code by @mmvandieren in #3383
- Fix
kronorder used in initial state construction in example notebook by @1tnguyen in #3574
Other Changes
- Bump minimum Python version to 3.11 by @bmhowe23 in #3588
- Ability to send on the
QuantinuumConfig.simulatorfield by @1tnguyen in #3451 - Handle additional target arguments for QCI by @khalatepradnya in #3511
- Add support for additional cuTensorNet 2.9 knobs including deterministic pathfinding/contraction by @cuMikeBrown in #3559
- Adding hyperparameters for gradient based algorithms by @sacpis in #3218
- Expose control qubits in pybind exposure of
noise_model::get_channelsby @wavefunction91 in #2940 - Adding a decomposition pattern for controlled-Y gate (CY) by @khalatepradnya in #3296
- Ability to inject extra payload to REST requests by @nvidia-dobri in #3292
- Support architecture-specific customization in target config by @1tnguyen in #3390
- Support
apply_noisein builder mode by @1tnguyen in #3399 - Restructuring of compiler pipelines by @schweitzpgi in #3423
- Ignore unsuccessful shot in output log by @khalatepradnya in #3463
- Add new argument for maximum number of qubits for Quantinuum targets by @khalatepradnya in #3566
- Adding reset after measure if qubit is to be reused by @1tnguyen in #3450
New Contributors
- @MIWdlB made their first contribution in #3272
- @wavefunction91 made their first contribution in #2940
- @qci-opensource made their first contribution in #3112
- @hrushikesh890 made their first contribution in #3361
- @vdFLunN5FWuz made their first contribution in #3381
- @jacofeld made their first contribution in #3418
- @Renaud-K made their first contribution in #3529
Release created by workflow 19330157076.
Full Changelog: 0.12.0...0.13.0