0.4.0-alpha
Pre-release
Pre-release
bettinaheim
released this
28 Jun 17:49
·
1176 commits
to main
since this release
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_result
when shots aren't provided by @amccaskey in #70 - Fix
QuakeValue
Lifetime Bug andkernel_builder::to_quake
Handling 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
QuakeBridgeVisitor
to handlecphase
by @1tnguyen in #132- cudaq-ensmallen not export BLAS symbols by @1tnguyen in #185
- Fixed a subtle bug in
QppCircuitSimulator::observe
by @1tnguyen in #189 - Bind r1 gate to python by @anthony-santana in #198
- Fixed
QppCircuitSimulator
shotsExecutionResult.expectationValue
by @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_builder
by @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 a folder to compute_ptr op. by @schweitzpgi in #220
- [cg] Move GenKernelExecution to CC dialect. by @schweitzpgi in #225
- Remove the use of the MLIR Memref dialect. by @schweitzpgi in #226
- Load available simulators and platforms lazily in Python by @amccaskey in #239
- [opt] Expand loop unrolling to autodetect counted loops. by @schweitzpgi in #265
- [pass] Decompose aggregate quantum allocations into multiple individual qubit allocations by @schweitzpgi in #280
- [opt] Flag to raise an error if cannot unroll a loop by @boschmitt in #295
- Preserve the line information in the source code for JIT compilation. by @schweitzpgi in #299
New Contributors
- @schweitzpgi made their first contribution in #8
- @boschmitt made their first contribution in #46
- @amccaskey made their first contribution in #21
- @anthony-santana made their first contribution in #105
- @1tnguyen made their first contribution in #73
- @hamidelmaazouz made their first contribution in #88
- @poojarao8 made their first contribution in #107
- @tlubowe made their first contribution in #59
- @Gistbatch made their first contribution in #110
Full Changelog: 0.3.0...0.4.0-alpha