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]
getStateData
to return data consistent with qpp andcudaq::from_state
by @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.