Skip to content

Release 0.37.0

Compare
Choose a tag to compare
@vincentmr vincentmr released this 08 Jul 14:12

New features since last release

  • Implement Python interface to the lightning.tensor device. (#748)

  • Add inverse support for gate operations in lightning.tensor in the C++ layer. (#753)

  • Add observable and expval support to the cutensornet-backed lightning.tensor C++ layer. (#728)

  • Add gate support to cutensornet-backed lightning.tensor C++ layer. (#718)

  • Add cutensornet-backed MPS C++ layer to lightning.tensor. (#704)

  • Add support for C(BlockEncode) to Lightning devices. (#743)

Breaking changes

  • Removed the QuimbMPS class and the corresponding backend from lightning.tensor. (#737)

  • Changed the name of default.tensor to lightning.tensor with the quimb backend. (#730)

  • dynamic_one_shot uses shot-vectors in the auxiliary tape to tell the device how many times to repeat the tape. Lightning-Qubit is updated accordingly. (#724)

  • dynamic_one_shot deals with post-selection during the post-processing phase, so Lightning-Qubit does not return None-valued measurements for mismatching samples anymore. (#720)

Improvements

  • Release candidate branches automatically use the new large GitHub runner pool. (#769)

  • Lightning-Kokkos dev wheels for MacOS (x86_64, ARM64) and Linux (aarch64) are uploaded to TestPyPI upon merging a pull request. (#765)

  • Lightning-Kokkos Linux (x86_64) dev wheels are pushed to Test PyPI upon merging a pull request. (#763)

  • Change the type of tensor network objects passed to ObservablesTNCuda and MeasurementsTNCuda classes from StateTensorT to TensorNetT. (#759)

  • Silence NDPermuter linting warnings. (#750)

  • Rationalize MCM tests, removing most end-to-end tests from the native MCM test file, but keeping one that validates multiple mid-circuit measurements with any allowed return. (#754)

  • Rename lightning.tensor C++ libraries. (#755)

  • Set state_tensor as const for the MeasurementTNCuda class. (#753)

  • Updated Kokkos version and support to 4.3.01. (#725)

  • Lightning-Kokkos' functors are rewritten as functions wrapping around generic gate and generator functors templated over a coefficient interaction function. This reduces boilerplate while clarifying how the various kernels differ from one another. (#640)

  • Update C++ and Python GitHub actions names to include the matrix info. (#717)

  • Remove CPhase in favour of CPhaseShift in Lightning devices. (#717)

  • The various OpenMP configurations of Lightning-Qubit are tested in parallel on different Github Actions runners. (#712)

  • Update Linux wheels to use manylinux_2_28 images. (#667)

  • Add support for qml.expval and qml.var in the lightning.tensor device for the quimb interface and the MPS method. (#686)

  • Changed the name of lightning.tensor to default.tensor with the quimb backend. (#719)

  • lightning.qubit and lightning.kokkos adhere to user-specified mid-circuit measurement configuration options. (#736)

  • Patch the C++ Measurements.probs(wires) method in Lightning-Qubit and Lightning-Kokkos to Measurements.probs() when called with all wires.
    This will trigger a more optimized implementation for calculating the probabilities of the entire system. (#744)

  • Remove the daily schedule from the "Compat Check w/PL - release/release" GitHub action. (#746)

  • Remove the required scipy config file for LightningQubit. The support is now maintained by passing SCIPY_LIBS_PATH to the compiler. (#775)

Documentation

  • Add installation instructions and documentation for lightning.tensor. (#756)

Bug fixes

  • Don't route probs(wires=[]) to probs(all_wires) in Lightning-Kokkos. (#762)

  • ControlledQubitUnitary is present in the Python device but not the TOML files. It is added to the decomposition gates since it can be implemented in its alternate form of C(QubitUnitary). (#767)

  • Update the Lightning TOML files to indicate that non-commuting observables are supported. (#764)

  • Fix regex matching issue with auto on-boarding of release candidate branch to using the large runner queue. (#774)

  • Fix random CI failures for lightning.tensor Python unit tests and ignore lightning_tensor paths. (#761)

  • lightning.qubit and lightning.kokkos use qml.ops.Conditional.base instead of qml.ops.Conditional.then_op. (#752)

  • The preprocessing step in lightning.qubit now uses interface information to properly support the hardware-like postselection for mid-circuit measurements. (#760)

  • Fix AVX streaming operation support with newer GCC. (#729)

  • Revert changes calling the templated IMAG, ONE, ZERO functions in Kokkos kernels since they are incompatible with device execution. (#733)

  • The tests_lkcpu_python.yml workflow properly checks out the release or stable version of Lightning-Qubit during the test job. (#723)

  • Fix PennyLane Lightning-Kokkos and LightningQubit tests for stable/stable configuration. (#734)

  • Remove the Autoray dependency from requirement files. (#736)

  • Fix the cuda-runtime-12-0 dependency issue on RHEL8. (#739)

  • Fix the memory segmentation fault when initializing zero-wire Lightning-Kokkos. (#757)

  • Remove pennylane.ops.op_math.controlled_decompositions.ctrl_decomp_zyz tests with len(control_wires) > 1. (#757)

  • Add support for Scipy v1.14. (#776)

  • Add pickle support for the DevPool object in lightning.gpu. (#772)

Contributors

This release contains contributions from (in alphabetical order):

Ali Asadi, Amintor Dusko, Lillian Frederiksen, Pietropaolo Frisoni, David Ittah, Vincent Michaud-Rioux, Lee James O'Riordan, Mudit Pandey, Shuli Shu, Jay Soni