Skip to content

Releases: PennyLaneAI/pennylane-lightning

Release 0.32.0

28 Aug 14:30
Compare
Choose a tag to compare

Improvements

  • Refactor LKokkos Measurements class to use (fast) specialized functors whenever possible. (#481)

  • Merge Lightning Qubit and Lightning Kokkos backends in the new repository. (#472)

New features since last release

  • The lightning_kokkos backend supports Nvidia GPU execution (with Kokkos v4 and CUDA v12). (#477)

  • Complete overhaul of repository structure to facilitate integration of multiple backends. Refactoring efforts we directed to improve development performance, and code reuse and decrease overall overhead to propagate changes through backends. The new C++ modular build strategy allows faster test builds restricted to a module. Update CI/CD actions concurrency strategy. Change the minimal Python version to 3.9. (#472)

  • Wheels are built with native support for sparse Hamiltonians. (#470)

  • Add native support to sparse Hamiltonians in the absence of Kokkos & Kokkos-kernels. (#465)

Breaking changes

  • Rename QubitStateVector to StatePrep in the LightningQubit and LightningKokkos classes. (#486)

  • Modify adjointJacobian methods to accept a (maybe unused) reference StateVectorT, allowing device-backed simulators to directly access state vector data for adjoint differentiation instead of copying it back-and-forth into JacobianData (host memory). (#477)

Documentation

  • Integrated new unified docs for Lightning Kokkos and Lightning Qubit packages. (#473)

Bug fixes

  • Ensure PennyLane has an active_return attribute before calling it. (#483)

  • Do no import sqrt2_v from <numbers> in Util.hpp to resolve issue with Lightning-GPU builds. (#479)

  • Update the CMake internal references to enable sub-project compilation with affecting the parent package. (#478)

  • apply no longer mutates the inputted list of operations. (#474)

Contributors

This release contains contributions from (in alphabetical order):

Amintor Dusko, Christina Lee, Vincent Michaud-Rioux, Lee J. O'Riordan

Release v0.31.0

26 Jun 14:06
Compare
Choose a tag to compare

New features since last release

  • Update Kokkos support to 4.0.01. [(#439)] (#439)

Breaking changes

  • Update tests to be compliant with PennyLane v0.31.0 development changes and deprecations. (#448)

Improvements

  • Remove logic from setup.py and transfer paths and env variable definitions into workflow files. (#450)

  • Detect MKL or CBLAS if ENABLE_BLAS=ON making sure that BLAS is linked as expected. (#449)

Documentation

  • Fix LightningQubit class parameter documentation. (#456)

Bug fixes

  • Ensure cross-platform wheels continue to build with updates in git safety checks. (#452)

  • Fixing Python version bug introduce in (#450)
    when Python_EXECUTABLE was removed from setup.py. (#461)

  • Ensure aligned allocator definition works with C++20 compilers. (#438)

  • Prevent multiple threads from calling Kokkos::initialize or Kokkos::finalize. (#439)

Contributors

This release contains contributions from (in alphabetical order):

Vincent Michaud-Rioux, Lee J. O'Riordan, Chae-Yeun Park

Release v0.30.0

01 May 17:47
Compare
Choose a tag to compare

New features since last release

  • Add MCMC sampler.
    (#384)

  • Serialize PennyLane's arithmetic operators when they are used as observables
    that are expressed in the Pauli basis.
    (#424)

Breaking changes

  • Lightning now works with the new return types specification that is now default in PennyLane.
    See the PennyLane qml.enable_return documentation for more information on this change.
    (#427)

Instead of creating potentially ragged numpy array, devices and QNode's now return an object of the same type as that
returned by the quantum function.

>>> dev = qml.device('lightning.qubit', wires=1)
>>> @qml.qnode(dev, diff_method="adjoint")
... def circuit(x):
...     qml.RX(x, wires=0)
...     return qml.expval(qml.PauliY(0)), qml.expval(qml.PauliZ(0))
>>> x = qml.numpy.array(0.5)
>>> circuit(qml.numpy.array(0.5))
(array(-0.47942554), array(0.87758256))

Interfaces like Jax or Torch handle tuple outputs without issues:

>>> jax.jacobian(circuit)(jax.numpy.array(0.5))
(Array(-0.87758255, dtype=float32, weak_type=True),
Array(-0.47942555, dtype=float32, weak_type=True))

Autograd cannot differentiate an output tuple, so results must be converted to an array before
use with qml.jacobian:

>>> qml.jacobian(lambda y: qml.numpy.array(circuit(y)))(x)
array([-0.87758256, -0.47942554])

Alternatively, the quantum function itself can return a numpy array of measurements:

>>> dev = qml.device('lightning.qubit', wires=1)
>>> @qml.qnode(dev, diff_method="adjoint")
>>> def circuit2(x):
...     qml.RX(x, wires=0)
...     return np.array([qml.expval(qml.PauliY(0)), qml.expval(qml.PauliZ(0))])
>>> qml.jacobian(circuit2)(np.array(0.5))
array([-0.87758256, -0.47942554])

Improvements

  • Remove deprecated set-output commands from workflow files.
    (#437)

  • Lightning wheels are now checked with twine check post-creation for PyPI compatibility.
    (#430)

  • Lightning has been made compatible with the change in return types specification.
    (#427)

  • Lightning is compatible with clang-tidy version 16.
    (#429)

Contributors

This release contains contributions from (in alphabetical order):

Christina Lee, Vincent Michaud-Rioux, Lee James O'Riordan, Chae-Yeun Park, Matthew Silverman

Release v0.29.0

28 Feb 12:35
Compare
Choose a tag to compare

Improvements

  • Remove runtime dependency on ninja build system. (#414)

  • Allow better integration and installation support with CMake targeted binary builds. (#403)

  • Remove explicit Numpy and Scipy requirements. (#412)

  • Get llvm installation root from the environment variable LLVM_ROOT_DIR (or fallback to brew). (#413)

  • Update AVX2/512 kernel infrastructure for additional gate/generator operations. (#404)

  • Remove unnecessary lines for resolving CodeCov issue. (#415)

  • Add more AVX2/512 gate operations. (#393)

Bug fixes

  • Ensure error raised when asking for out of order marginal probabilities. Prevents the return of incorrect results. (#416)

  • Fix Github shields in README. (#402)

Contributors

Amintor Dusko, Vincent Michaud-Rioux, Lee James O'Riordan, Chae-Yeun Park

Release 0.28.2

26 Jan 16:37
Compare
Choose a tag to compare

Bug fixes

  • Fix Python module versioning for Linux wheels. (#408)

Contributors

This release contains contributions from (in alphabetical order):

Amintor Dusko

Release 0.28.1

11 Jan 16:42
Compare
Choose a tag to compare

Bug fixes

  • Fix Pybind11 module versioning and locations for Windows wheels. (#400)

Contributors

This release contains contributions from (in alphabetical order):

Lee J. O'Riordan

Release 0.28.0

19 Dec 14:32
Compare
Choose a tag to compare

Breaking changes

  • Deprecate support for Python 3.7. (#391)

Improvements

  • Improve Lightning package structure for external use as a C++ library. (#369)

  • Improve the stopping condition method. (#386)

Bug fixes

  • Pin CMake to 3.24.x in wheel-builder to avoid Python not found error in CMake 3.25, when building wheels for PennyLane-Lightning-GPU. (#387)

Contributors

This release contains contributions from (in alphabetical order):

Amintor Dusko, Lee J. O'Riordan

Release v0.27.0

14 Nov 19:26
Compare
Choose a tag to compare

Release 0.27.0

New features since last release

  • Enable building of python 3.11 wheels and upgrade python on CI/CD workflows to 3.8. (#381)

Improvements

  • Update clang-tools version in Github workflows. (#351)

  • Improve tests and checks CI/CD pipelines. (#353)

  • Implement 3 Qubit gates (CSWAP & Toffoli) & 4 Qubit gates (DoubleExcitation, DoubleExcitationMinus, DoubleExcitationPlus) using (low-memory) LM architecture. (#362)

  • Upgrade Kokkos and Kokkos Kernels to 3.7.00, and improve sparse matrix-vector multiplication performance and memory usage. (#361)

  • Update Linux (ubuntu-latest) architecture x86_64 wheel-builder from GCC 10.x to GCC 11.x. (#373)

  • Update gcc and g++ 10.x to 11.x in CI tests. This update brings improved support for newer C++ features. (#370)

  • Change Lightning to inherit from QubitDevice instead of DefaultQubit. (#365)

Bug fixes

  • Use mutex when accessing cache in KernelMap. (#382)

Contributors

This release contains contributions from (in alphabetical order):

Amintor Dusko, Chae-Yeun Park, Monit Sharma, Shuli Shu

Release v0.26.1

17 Oct 13:56
Compare
Choose a tag to compare

Release 0.26.1

Bug fixes

  • Fixes the transposition method used in the probability calculation.
    (#377)

Contributor

Amintor Dusko

Release v0.26.0

19 Sep 15:24
Compare
Choose a tag to compare

Improvements

  • Introduces requirements-dev.txt and improves dockerfile. (#330)

  • Support expval for a Hamiltonian. (#333)

  • Implements caching for Kokkos installation. (#316)

  • Supports measurements of operator arithmetic classes such as Sum, Prod,
    and SProd by deferring handling of them to DefaultQubit. (#349)

@qml.qnode(qml.device('lightning.qubit', wires=2))
def circuit():
    obs = qml.s_prod(2.1, qml.PauliZ(0)) + qml.op_sum(qml.PauliX(0), qml.PauliZ(1))
    return qml.expval(obs)

Bug fixes

  • Test updates to reflect new measurement error messages. (#334)

  • Updates to the release tagger to fix incompatibilities with RTD. (#344)

  • Update cancel-workflow-action and bot credentials. (#345)

Contributors

This release contains contributions from (in alphabetical order):

Amintor Dusko, Christina Lee, Lee J. O'Riordan, Chae-Yeun Park