Releases: NVIDIA/cuda-quantum
0.6.0
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 🎉
- C++17 support by @schweitzpgi in #973
- MPI support as plugins by @1tnguyen in #966
- Support for recursive vector arguments and other data types by @schweitzpgi in #1051
- Allow user to directly specify mapping topology file by @bmhowe23 in #1084
- Pre-built binaries, installer, and building from source guide by @bettinaheim in #1010
- Introducing
remote-mqpuREST Server-Client platform by @1tnguyen in #1012
Bug Fixes 🐛
- Make C++ ASTBridge specification adherent for operation broadcasting by @amccaskey in #876
- Fix missing ctrl-swap support by @schweitzpgi in #918
- Fix WireType compliance issues with qubit-mapping pass by @bmhowe23 in #932
- Reduce GPU memory usage when using reset(q) in user programs by @bmhowe23 in #942
- Fix for misleading CUDA not found message by @khalatepradnya in #986
- Fixes for
tensornetbackend not picking up MPI by @1tnguyen in #974 - Fix bug in sampling a kernel with mz-reset-mz pattern (overwriting sample_result register) by @amccaskey in #997
- Fix ghost qubit bug #981 by @amccaskey in #998
- Hide error message while checking for GPUs in Python workflow by @khalatepradnya in #995
- Fix density matrix qubit ordering bug by @anthony-santana in #1033
- Fix library mode qubit ordering bug. by @amccaskey in #1044
- Patch density matrix bug in release mode by @anthony-santana in #1053
- Fix issue 1064: bug in bridge when lambda argument contains a loop. by @schweitzpgi in #1069
- Improve thread-safety of CUDAQ static variables by @1tnguyen in #1078
- Chemistry related bug fixes by @amccaskey in #1099
- Fix bug 1108 - race condition in sample_async by @amccaskey in #1114
Documentation Updates ✏️
- Fixing typos and copy editing for docs by @mmvandieren in #896
- Add documentation and test for mixed language project by @schweitzpgi in #1085
- MPI plugin docs by @1tnguyen in #1095
- Adding a section on updating CUDA Quantum to docs by @bettinaheim in #1112
Other Changes
- Add new pass, linear-ctrl-form by @schweitzpgi in #853
- Add a MeasureType to Quake by @schweitzpgi in #869
- Deprecate builder ctrl gates that are not specification compliant by @anthony-santana in #935
- Add ability to create shared library to the driver by @schweitzpgi in #985
- Improved support for kernel return values by @schweitzpgi in #1009
- Deprecating qreg and qspan by @schweitzpgi in #983
- Support for return vectors of type std::vector where NT is a numerical type by @schweitzpgi in #1014
- Ability to pass custom passes from
nvq++by @1tnguyen in #1034 - Add support for vectors of vectors to the bridge. by @schweitzpgi in #1036
- Support controlled-SWAP's in kernel builder by @anthony-santana in #924
- Partial support for passing/return POD struct values. by @schweitzpgi in #1054
- Process initializer lists for struct types in the bridge. by @schweitzpgi in #1068
- Enable use of single-term spin_op with kernel_builder::exp_pauli by @amccaskey in #1071
New Contributors
- @mmvandieren made their first contribution in #896
- @jjacobelli made their first contribution in #832
- @Yaraslaut made their first contribution in #1038
Full Changelog: 0.5.0...0.6.0
Release created by workflow 7702894514.
GitHub commit e0fb95f99b955acca530fcedeb3acd109d9d0183
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
pySampleAsyncby @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
tensornetandtensornet-mpsbackends 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_asyncfor 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
expectationby @anthony-santana in #791 - Better support for
QuakeValuein 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_mitigationandsharpenconfigurations 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.
0.4.1
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 🎉
- Expose adjoint T and S gates to python builder API by @anthony-santana in #402
- Added kernel_builder functions for the hardware efficient ansatz #361 by @johanneskuhlmann in #451
- Adding nvidia backends to python wheels by @bettinaheim in #480
- Multi-platform Docker images and aarch64 wheels by @bettinaheim in #548
- Implement CUDA Quantum Kernel from State Vector. by @amccaskey in #568
- Enable std::vector construction within kernels by @amccaskey in #593
Bug Fixes 🐛
- Support Volta+ arch in custatevec backend by @1tnguyen in #696
- Accurately detect mx/my mid-circuit measurements by @amccaskey in #415
- Bug fix to support multiple single qubit allocations on quantum backends by @schweitzpgi in #474
- Fix missing support for R1 decomposition by @amccaskey in #471
- Fix #475: bug with measurement operations in value semantics by @schweitzpgi in #491
- Fix #303 - release build segfault by @schweitzpgi in #502
- Fixes bug with null_wire. by @schweitzpgi in #504
- Fix bug in bit flip noise channel by @anthony-santana in #528
- [Support] Closes #532: change backtrace error message by @boschmitt in #534
- Fix #523 and std::unique bug in CircuitSimulator by @amccaskey in #526
- Fix compiler crash when processing empty region by @bmhowe23 in #552
- Bug fixes for
nvq++arguments by @1tnguyen in #549 - Add spin_op::from_word(...) by @amccaskey in #555
- Add multi-control decomposition to IONQ pipeline by @boschmitt in #566
- Support QASM emission for CallOps by @amccaskey in #563
- Convert IonQ outputs to bit strings and correct order by @bmhowe23 in #575
- Canonicalizations for ConcatOp and ExtractRefOp by @amccaskey in #574
- [custatevec]
getStateDatato return data consistent with qpp andcudaq::from_stateby @1tnguyen in #582 - Allow more descriptive output names by @bmhowe23 in #580
- Fix for issue #603: QASM emission by @1tnguyen in #604
- Fix bug when using gcc-11 header files. by @schweitzpgi in #613
- Fix issues with get_state() in Python by @amccaskey in #616
- [Opt] Fix use after free (erase) in mem2reg by @boschmitt in #628
- Fix for issue #641: QASM export by @1tnguyen in #649
- Only enable optimization in non-empty kernels by @bmhowe23 in #656
- Add the ability to pass additional command line options by @schweitzpgi in #647
Documentation Updates ✏️
- Clarifying documentation for GPU-based simulators by @bettinaheim in #738
- Document CUDA library dependencies for Python wheels by @anthony-santana in #716
- Updating docs on built-in operations by @bettinaheim in #719
- Document GPU and CPU requirements by @schweitzpgi in #707
- Adding mqpu documentation by @1tnguyen in #708
- Fixed code snippets using wrong kernel_builder APIs by @1tnguyen in #479
- Cleanup the MLIR Pass advanced document, add a FileCheck test by @amccaskey in #547
- Refactor python documentation and update examples by @anthony-santana in #581
- Adding tutorials folder with example notebooks by @zohimchandani in #560
Other Changes
- Update unwind-lowering pass to be more general by @schweitzpgi in #389
- Improve synthesis. by @schweitzpgi in #401
- updating cuquantum and cutensor versions by @bettinaheim in #422
- Add environment variable allowing one to print the IR before remote submission by @amccaskey in #427
- Issue #274: Migrate the fixup-linkage script to C++ by @schweitzpgi in #497
- Add cudaq::set_random_seed() by @amccaskey in #477
- Python sample() and observe() implement broadcasting by @amccaskey in #495
- Add option to set the noise model when using the IonQ-hosted simulator by @1tnguyen in #536
- Add all_gather function for MPI by @amccaskey in #516
- Enable one to progressively build a Kernel with the kernel_builder by @amccaskey in #558
- Implement spin_op::to_sparse_matrix(). by @amccaskey in #567
- Rewrite the AST Bridge. by @schweitzpgi in #587
- Adjustments to support libc++ in the AST Bridge by @schweitzpgi in #594
- Improve reproducibility of results by @bmhowe23 in #617
- More precise representation of the dataflow in Quake value semantics by @schweitzpgi in #625
- Add get_random_seed() to make broadcast tests repeatable by @bmhowe23 in #648
- Modify Quake::ApplyOp to allow an indirect form of call in order to by @schweitzpgi in #663
- Improve measurement support for submissions to IonQ by @bmhowe23 in #661
- Add ctrl-t and ctrl-s decomposition via r1 conversion by @1tnguyen in #672
- Introduce sample_options and observe_options for addl flexibility by @bmhowe23 in #664
- Fix #633: Bump the LLVM version to 16.0.6. by @schweitzpgi in #676
New Contributors
- @orclassiq made their first contribution in #394
- @johanneskuhlmann made their first contribution in #451
- @jrhemstad made their first contribution in #447
- @kukushechkin made their first contribution in #468
- @ajschmidt8 made their first contribution in #585
- @jfriel-oqc made their first contribution in #435
- @zohimchandani made their first contribution in #560
Full Changelog: 0.4.0...0.4.1
Release created by workflow 6408359768.
0.4.0
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 🎉
- Implement cudaq::control() taking a free function as argument by @schweitzpgi in #35
- Add reset to kernel_builder in C++ and python. by @amccaskey in #18
- Add for_loop to cudaq::kernel_builder and cudaq.Kernel by @amccaskey in #19
- Optimization: do not add control qubits to compute/uncompute steps of compute_action idiom. by @schweitzpgi in #63
- Expose for_each_term and for_each_pauli to python by @amccaskey in #56
- Implement spin_op::to_matrix() by @amccaskey in #31
- Add support for negate operator (operator!) to cudaq::control. by @schweitzpgi in #81
- Improve the ExecutionManager Extension Point by @amccaskey in #33
- Performance enhancements: observe_n and sample_n broadcast functions by @amccaskey in #74
- spin_op performance enhancement by @amccaskey in #115
- Implement chemistry domain sub-package. by @amccaskey in #112
- [optimizer] Decomposition pass by @boschmitt in #143
- Increase performance of quantum allocation and deallocation in simulation by @amccaskey in #167
- Basis translation pass by @boschmitt in #144
- Implement runtime quantum operation tracing by @amccaskey in #92
- [optimizer] Multicontrol decomposition by @boschmitt in #194
- Add Server Helper for Quantinuum backends by @amccaskey in #176
- Expose SWAP gate to c++ and python builder by @anthony-santana in #200
- [opt] Add memtoreg and regtomem passes. by @schweitzpgi in #233
- Added forward difference gradient evaluation. by @poojarao8 in #107
- Local emulation of remote qpu execution by @amccaskey in #262
- Implement MPI support in CUDA Quantum by @amccaskey in #237
- [pass] Add a loop normalization pass. by @schweitzpgi in #313
- Linux support for pip installation by @anthony-santana in #304
Bug Fixes 🐛
- Add overload to handle the case when the user writes: by @schweitzpgi in #32
- Do not allow operator! on target qubits. by @schweitzpgi in #6
- Temporary fix for AST visitor reentrancy bugs. by @schweitzpgi in #22
- Fix bug 69, no expval attached to
observe_resultwhen shots aren't provided by @amccaskey in #70 - Fix
QuakeValueLifetime Bug andkernel_builder::to_quakeHandling by @amccaskey in #67 - Adding r-val overload (QuakeValue &&) for kernel_builder adjoint modifier by @1tnguyen in #99
- [CircuitCheck] Handle qvec as controls by @boschmitt in #128
- [common-ops] Fixes some matrices (row-major vs col-major) issues by @boschmitt in #133
- [quake] Fixes some matrices (row-major vs col-major) issues by @boschmitt in #140
- Fix #129, Make kernel_builder::qalloc(1) explicitly return a qvec. by @amccaskey in #136
QuakeBridgeVisitorto handlecphaseby @1tnguyen in #132- cudaq-ensmallen not export BLAS symbols by @1tnguyen in #185
- Fixed a subtle bug in
QppCircuitSimulator::observeby @1tnguyen in #189 - Bind r1 gate to python by @anthony-santana in #198
- Fixed
QppCircuitSimulatorshotsExecutionResult.expectationValueby @1tnguyen in #208 - Fixing segfault crashes when using measure/reset ops. by @1tnguyen in #217
- Fix #250: linkage of top-level (global) function. by @schweitzpgi in #267
- Reset and parametric gates in
kernel_builderby @1tnguyen in #269 - Fix #251: Base profile should handle single qubit allocations. by @schweitzpgi in #273
- Fix #281: let canonicalization pattern work with IndexType. by @schweitzpgi in #282
- Fix #286: Add canonicalization to hoist invariants cc.loop arguments. by @schweitzpgi in #289
- Fix #296: issue processing if-statements in JIT compilation by @schweitzpgi in #298
- [pass] Fix #291: don't erase non-controlled ops by @boschmitt in #292
- Fix #325: Bridge had some bugs with callable instances. by @schweitzpgi in #326
- Fix issue with qreg of dynamic size and disappearing instructions by @schweitzpgi in #358
- Fix #344 - add support for std::uint8_t kernel argument by @amccaskey in #356
- Fix kernel_builder nested function call bug, #332 by @amccaskey in #334
- Fix #338: Work on implementation of cudaq::adjoint. by @schweitzpgi in #374
Breaking Changes 🛠
- Remove qpud by @amccaskey in #91
- Delete qtx-translate and references to same. by @schweitzpgi in #102
- Remove outdated functions from cudaq.py by @anthony-santana in #105
- [CircuitCheck] Remove QTX support by @boschmitt in #118
- [quake] Universally replace the QRef type name with Ref. by @schweitzpgi in #160
- [quake] Universal conversion of QVec to Veq. by @schweitzpgi in #163
- Removes the QTX dialect by @boschmitt in #157
- NVQ++ Targets by @amccaskey in #147
- Update python command line flags by @amccaskey in #187
- [nfc] Remove the raise to affine (stub) pass. by @schweitzpgi in #235
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
- Revert change to disable jump branching. by @schweitzpgi in #5
- Replace the old deallocation pass. by @schweitzpgi in #30
- Make use of the various math dialect power operations. by @schweitzpgi in #71
- [nvq++] Add RPATH flags only to the final binary by @boschmitt in #52
- CircuitSimulator Refactor by @amccaskey in #12
- Add a wire type to the quake dialect. by @schweitzpgi in #101
- Add new ops to quake. by @schweitzpgi in #109
- Link to correct version of custatvec libs by @hamidelmaazouz in http...
0.4.0-alpha
What's Changed
Features and Enhancements 🎉
- Implement cudaq::control() taking a free function as argument by @schweitzpgi in #35
- Add reset to kernel_builder in C++ and python. by @amccaskey in #18
- Add for_loop to cudaq::kernel_builder and cudaq.Kernel by @amccaskey in #19
- Optimization: do not add control qubits to compute/uncompute steps of compute_action idiom. by @schweitzpgi in #63
- Expose for_each_term and for_each_pauli to python by @amccaskey in #56
- Implement spin_op::to_matrix() by @amccaskey in #31
- Add support for negate operator (operator!) to cudaq::control. by @schweitzpgi in #81
- Improve the ExecutionManager Extension Point by @amccaskey in #33
- Performance enhancements: observe_n and sample_n broadcast functions by @amccaskey in #74
- spin_op performance enhancement by @amccaskey in #115
- Implement chemistry domain sub-package. by @amccaskey in #112
- [optimizer] Decomposition pass by @boschmitt in #143
- Increase performance of quantum allocation and deallocation in simulation by @amccaskey in #167
- Basis translation pass by @boschmitt in #144
- Implement runtime quantum operation tracing by @amccaskey in #92
- [optimizer] Multicontrol decomposition by @boschmitt in #194
- Add Server Helper for Quantinuum backends by @amccaskey in #176
- Add qvector, qarray, and qview by @amccaskey in #152
- Expose SWAP gate to c++ and python builder by @anthony-santana in #200
- [opt] Add memtoreg and regtomem passes. by @schweitzpgi in #233
- Added forward difference gradient evaluation. by @poojarao8 in #107
- Local emulation of remote qpu execution by @amccaskey in #262
- Implement MPI support in CUDA Quantum by @amccaskey in #237
Bug Fixes 🐛
- Add overload to handle the case when the user writes: by @schweitzpgi in #32
- Do not allow operator! on target qubits. by @schweitzpgi in #6
- Temporary fix for AST visitor reentrancy bugs. by @schweitzpgi in #22
- Fix bug 69, no expval attached to
observe_resultwhen shots aren't provided by @amccaskey in #70 - Fix
QuakeValueLifetime Bug andkernel_builder::to_quakeHandling by @amccaskey in #67 - Adding r-val overload (QuakeValue &&) for kernel_builder adjoint modifier by @1tnguyen in #99
- [CircuitCheck] Handle qvec as controls by @boschmitt in #128
- [common-ops] Fixes some matrices (row-major vs col-major) issues by @boschmitt in #133
- [quake] Fixes some matrices (row-major vs col-major) issues by @boschmitt in #140
- Fix #129, Make kernel_builder::qalloc(1) explicitly return a qvec. by @amccaskey in #136
QuakeBridgeVisitorto handlecphaseby @1tnguyen in #132- cudaq-ensmallen not export BLAS symbols by @1tnguyen in #185
- Fixed a subtle bug in
QppCircuitSimulator::observeby @1tnguyen in #189 - Bind r1 gate to python by @anthony-santana in #198
- Fixed
QppCircuitSimulatorshotsExecutionResult.expectationValueby @1tnguyen in #208 - Fixing segfault crashes when using measure/reset ops. by @1tnguyen in #217
- Fix #250: linkage of top-level (global) function. by @schweitzpgi in #267
- Reset and parametric gates in
kernel_builderby @1tnguyen in #269 - Fix #251: Base profile should handle single qubit allocations. by @schweitzpgi in #273
- Fix #281: let canonicalization pattern work with IndexType. by @schweitzpgi in #282
- Fix #286: Add canonicalization to hoist invariants cc.loop arguments. by @schweitzpgi in #289
- Fix #296: issue processing if-statements in JIT compilation by @schweitzpgi in #298
- [pass] Fix #291: don't erase non-controlled ops by @boschmitt in #292
Breaking Changes 🛠
- Remove qpud by @amccaskey in #91
- Delete qtx-translate and references to same. by @schweitzpgi in #102
- Remove outdated functions from cudaq.py by @anthony-santana in #105
- [CircuitCheck] Remove QTX support by @boschmitt in #118
- [quake] Universally replace the QRef type name with Ref. by @schweitzpgi in #160
- [quake] Universal conversion of QVec to Veq. by @schweitzpgi in #163
- Removes the QTX dialect by @boschmitt in #157
- NVQ++ Targets by @amccaskey in #147
- Update python command line flags by @amccaskey in #187
- [nfc] Remove the raise to affine (stub) pass. by @schweitzpgi in #235
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
- Revert change to disable jump branching. by @schweitzpgi in #5
- Replace the old deallocation pass. by @schweitzpgi in #30
- Make use of the various math dialect power operations. by @schweitzpgi in #71
- [nvq++] Add RPATH flags only to the final binary by @boschmitt in #52
- CircuitSimulator Refactor by @amccaskey in #12
- Add a wire type to the quake dialect. by @schweitzpgi in #101
- Add new ops to quake. by @schweitzpgi in #109
- Link to correct version of custatvec libs by @hamidelmaazouz in #88
- [CircuitCheck] Run canonicalizer before checking by @boschmitt in #122
- Convert the quake dialect ops to support both memory and register forms. by @schweitzpgi in #124
- Change qextract to extract_ref everywhere. by @schweitzpgi in #138
- Add types for structs and arrays to CC by @schweitzpgi in #146
- [quake] OperatorInterface method to get negated controls by @boschmitt in #154
- [CircuitCheck] Handle negated controls by @boschmitt in #159
- Fold constant into extract_ref op by @schweitzpgi in #164
- [CircuitCheck] Handle raw index in ExtractRefOp by @boschmitt in #168
- [cc] Start adding some LLVM-like operations. by @schweitzpgi in #192
- [CircuitCheck] Handle local qubits by @boschmitt in #190
- [quake, cc] Improved alloca ops by @schweitzpgi in #193
- Fixes for macOS by @boschmitt in #213
- [bridge, runtime] Replace use of LLVM-IR dialect in the bridge and python interface with CC dialect operations. by @schweitzpgi in #201
- [cc] Add...
0.3.0
Initial public release of CUDA Quantum.
This GitHub release contains a limited set of backends. The complete Docker image with all documented backends can be found on NGC. More information about released packages and other versions can be found in our documentation.