Skip to content

Release v0.34.0

Compare
Choose a tag to compare
@mlxd mlxd released this 08 Jan 15:35

New features since last release

  • Support added for Python 3.12 wheel builds. (#541)

  • Lightning-Qubit support arbitrary controlled gates (any wires and any control values). The kernels are implemented in the LM module. (#576)

  • Shot-noise related methods now accommodate observable objects with arbitrary eigenvalues. Add a Kronecker product method for two diagonal matrices. (#570)

  • Add shot-noise support for probs in the C++ layer. Probabilities are calculated from generated samples. All Lightning backends support this feature. Please note that target wires should be sorted in ascending manner. (#568)

  • Add LM kernels to apply arbitrary controlled operations efficiently. (#516)

  • Add shots support for variance value, probs, sample, counts calculation for given observables (NamedObs, TensorProd and Hamiltonian) based on Pauli words, Identity and Hadamard in the C++ layer. All Lightning backends support this support feature. (#561)

  • Add shots support for expectation value calculation for given observables (NamedObs, TensorProd and Hamiltonian) based on Pauli words, Identity and Hadamard in the C++ layer by adding measure_with_samples to the measurement interface. All Lightning backends support this support feature. (#556)

  • qml.QubitUnitary operators can be included in a circuit differentiated with the adjoint method. Lightning handles circuits with arbitrary non-differentiable qml.QubitUnitary operators. 1,2-qubit qml.QubitUnitary operators with differentiable parameters can be differentiated using decomposition. (#540)

Breaking changes

  • Set the default version of Kokkos to 4.2.00 throughout the project (CMake, CI, etc.) (#578)

  • Overload applyOperation with a fifth matrix argument to all state vector classes to support arbitrary operations in AdjointJacobianBase. (#540)

Improvements

  • Ensure aligned memory used for numpy arrays with state-vector without reallocations. (#572)

  • Unify error messages of shot measurement related unsupported observables to better Catalyst. (#577)

  • Add configuration files to improve compatibility with Catalyst. (#566)

  • Refactor shot-noise related methods of MeasurementsBase class in the C++ layer and eigenvalues are not limited to 1 and -1. Add getObs() method to Observables class. Refactor applyInPlaceShots to allow users to get eigenvalues of Observables object. Deprecated _preprocess_state method in MeasurementsBase class for safer use of the LightningQubitRaw backend. (#570)

  • Modify setup.py to use backend-specific build directory (f"build_{backend}") to accelerate rebuilding backends in alternation. (#540)

  • Update Dockerfile and rewrite the build-wheel-lightning-gpu stage to build Lightning-GPU from the pennylane-lightning monorepo. (#539)

  • Add the MPI test CI workflows of Lightning-GPU in compatibility cron jobs. (#536)

  • Add MPI synchronization in places to safely handle communicated data. (#538)

  • Add release option in compatibility cron jobs to test the release candidates of PennyLane and the Lightning plugins against one another. (#531)

  • Add GPU workflows in compatibility cron jobs to test Lightning-GPU and Lightning-Kokkos with the Kokkos CUDA backend. (#528)

Documentation

  • Fixed a small typo in the documentation page for the PennyLane-Lightning GPU device. (#563)

  • Add OpenGraph social preview for Lightning docs. (#574)

Bug fixes

  • Fix CodeCov file contention issue when uploading data from many workloads. (#584)

  • Ensure the lightning.gpu intermediate wheel builds are uploaded to TestPyPI. (#575)

  • Allow support for newer clang-tidy versions on non-x86_64 platforms. (#567)

  • Do not run C++ tests when testing for compatibility with PennyLane, hence fixing plugin-matrix failures. Fix Lightning-GPU workflow trigger. (#571)

  • Revert single-node multi-GPU batching behaviour to match PennyLaneAI/pennylane-lightning-gpu#27. (#564)

  • Move deprecated stateprep QuantumScript argument into the operation list in mpitests/test_adjoint_jacobian.py. (#540)

  • Fix MPI Python unit tests for the adjoint method. (#538)

  • Fix the issue with assigning kernels to ops before registering kernels on macOS. (#582)

  • Update MANIFEST.in to include device config files and CHANGELOG.md. (#585)

Contributors

This release contains contributions from (in alphabetical order):

Ali Asadi, Isaac De Vlugt, Amintor Dusko, Vincent Michaud-Rioux, Erick Ochoa Lopez, Lee James O'Riordan, Shuli Shu