Skip to content

Releases: PennyLaneAI/pennylane-lightning

Release 0.19.0

08 Nov 18:08
Compare
Choose a tag to compare

What's Changed

  • Update to development version 0.19 by @trbromley in #150
  • Fix C++ compiler warnings by @maliasadi in #147
  • Ensure Lightning adheres to C++17 modernization standard with clang-tidy by @mlxd in #153
  • Add check-tidy to Makefile by @maliasadi in #156
  • Optimise x86_64 builds with AVX friendly opts by @mlxd in #157
  • Version Bump 0.19.0 by @github-actions in #163
  • Fix OpenMP library issues on M1 Macs by @mlxd in #166
  • Fix CI builder release issues by @mlxd in #168

New Contributors

  • @github-actions made their first contribution in #163

Full Changelog: v0.18.0...v0.19.0

Release 0.18.0

17 Sep 16:05
02e69c0
Compare
Choose a tag to compare

New features since last release

  • PennyLane-Lightning now provides a high-performance
    adjoint Jacobian method for differentiating quantum circuits.
    (#136)

    The adjoint method operates after a forward pass by iteratively applying inverse gates to scan
    backwards through the circuit. The method is already available in PennyLane's
    default.qubit device, but the version provided by lightning.qubit integrates with the C++
    backend and is more performant, as shown in the plot below:

    The plot compares the average runtime of lightning.qubit and default.qubit for calculating the
    Jacobian of a circuit using the adjoint method for a range of qubit numbers. The circuit
    consists of ten BasicEntanglerLayers with a PauliZ expectation value calculated on each wire,
    repeated over ten runs. We see that lightning.qubit provides a speedup of around two to eight
    times, depending on the number of qubits.

    The adjoint method can be accessed using the standard interface. Consider the following circuit:

    import pennylane as qml
    
    wires = 3
    layers = 2
    dev = qml.device("lightning.qubit", wires=wires)
    
    @qml.qnode(dev, diff_method="adjoint")
    def circuit(weights):
        qml.templates.StronglyEntanglingLayers(weights, wires=range(wires))
        return qml.expval(qml.PauliZ(0))
    
    weights = qml.init.strong_ent_layers_normal(layers, wires, seed=1967)

    The circuit can be executed and its gradient calculated using:

    >>> print(f"Circuit evaluated: {circuit(weights)}")
    Circuit evaluated: 0.9801286266677633
    >>> print(f"Circuit gradient:\n{qml.grad(circuit)(weights)}")
    Circuit gradient:
    [[[-1.11022302e-16 -1.63051504e-01 -4.14810501e-04]
    [ 1.11022302e-16 -1.50136528e-04 -1.77922957e-04]
    [ 0.00000000e+00 -3.92874550e-02  8.14523075e-05]]
    
    [[-1.14472273e-04  3.85963953e-02  0.00000000e+00]
    [-5.76791765e-05 -9.78478343e-02  0.00000000e+00]
    [-5.55111512e-17  0.00000000e+00 -1.11022302e-16]]]  
  • PennyLane-Lightning now supports all of the operations and observables of default.qubit.
    (#124)

Improvements

  • A new state-vector class StateVectorManaged was added, enabling memory use to be bound to
    statevector lifetime.
    (#136)

  • The repository now has a well-defined component hierarchy, allowing each indepedent unit to be
    compiled and linked separately.
    (#136)

  • PennyLane-Lightning can now be installed without compiling its C++ binaries and will fall back
    to using the default.qubit implementation. Skipping compilation is achieved by setting the
    SKIP_COMPILATION environment variable, e.g., Linux/MacOS: export SKIP_COMPILATION=True,
    Windows: set SKIP_COMPILATION=True. This feature is intended for building a pure-Python wheel of
    PennyLane-Lightning as a backup for platforms without a dedicated wheel.
    (#129)

  • The C++-backed Python bound methods can now be directly called with wires and supplied parameters.
    (#125)

  • Lightning supports arbitrary unitary and non-unitary gate-calls from Python to C++ layer.
    (#121)

Documentation

  • Added preliminary architecture diagram for package.
    (#131)

  • C++ API built as part of docs generation.
    (#131)

Breaking changes

  • Wheels for MacOS <= 10.13 will no longer be provided due to XCode SDK C++17 support requirements.
    (#149)

Bug fixes

  • An indexing error in the CRY gate is fixed. (#136)

  • Column-major data in numpy is now correctly converted to row-major upon pass to the C++ layer.
    (#126)

Contributors

This release contains contributions from (in alphabetical order):

Thomas Bromley, Lee James O'Riordan

Release 0.17.0

17 Aug 02:42
9375927
Compare
Choose a tag to compare

New features

  • C++ layer now supports float (32-bit) and double (64-bit) templated complex data. (#113)

Improvements

  • The PennyLane device test suite is now included in coverage reports. (#123)

  • Static versions of jQuery and Bootstrap are no longer included in the CSS theme. (#118)

  • C++ tests have been ported to use Catch2 framework. (#115)

  • Testing now exists for both float and double precision methods in C++ layer. (#113) (#115)

  • Compile-time utility methods with constexpr have been added. (#113)

  • Wheel-build support for ARM64 (Linux and MacOS) and PowerPC (Linux) added. (#110)

  • Add support for Controlled Phase Gate (ControlledPhaseShift). (#114)

  • Move changelog to .github and add a changelog reminder. (#111)

  • Adds CMake build system support. (#104)

Breaking changes

  • Removes support for Python 3.6. (#127)

  • Compilers with C++17 support are now required to build C++ module. (#113)

  • Gate classes have been removed with functionality added to StateVector class. (#113)

  • We are no longer building wheels for Python 3.6. (#106)

Bug fixes

  • Column-major data in numpy is now correctly converted to row-major upon pass to the C++ layer. (#126)

  • PowerPC wheel-builder now successfully compiles modules. (#120)

Documentation

  • Added community guidelines. (#109)

Contributors

This release contains contributions from (in alphabetical order):

Ali Asadi, Thomas Bromley, Lee James O'Riordan

Release 0.15.1

30 Apr 15:33
32b9f29
Compare
Choose a tag to compare

Bug fixes

  • The PennyLane-Lightning binaries are now built with NumPy 1.19.5, to avoid ABI compatibility issues with the latest NumPy 1.20 release. See the NumPy release notes for more details. (#97)

Contributors

This release contains contributions from (in alphabetical order):

Josh Izaac, Antal Száva

Release 0.15.0

20 Apr 09:41
fbedc60
Compare
Choose a tag to compare

Improvements

  • For compatibility with PennyLane v0.15, the analytic keyword argument has been removed. Statistics can still be computed analytically by setting shots=None. (#93)

  • Inverse gates are now supported. (#89)

  • Add new lightweight backend with performance improvements. (#57)

  • Remove the previous Eigen-based backend. (#67)

Bug fixes

  • Re-add dispatch table after fixing static initialization order issue. (#68)

Contributors

This release contains contributions from (in alphabetical order):

Thomas Bromley, Theodor Isacsson, Christina Lee, Thomas Loke, Antal Száva.

Release 0.14.1

12 Feb 13:53
a36c87d
Compare
Choose a tag to compare

Bug fixes

  • Fixes a bug where the QNode would swap LightningQubit to DefaultQubitAutograd on device execution due to the inherited
    passthru_devices entry of the capabilities dictionary. (#61)

Contributors

This release contains contributions from (in alphabetical order):

Antal Száva

Release 0.14.0

02 Feb 09:14
3ee12c2
Compare
Choose a tag to compare

Improvements

  • Extends support from 16 qubits to 50 qubits. (#52)

Bug fixes

  • Updates applying basis state preparations to correspond to the changes in DefaultQubit. (#55)

Contributors

This release contains contributions from (in alphabetical order):

Thomas Loke, Tom Bromley, Josh Izaac, Antal Száva

Release 0.12.0

20 Oct 09:31
a1fd14c
Compare
Choose a tag to compare

Bug fixes

  • Updates capabilities dictionary to be compatible with core PennyLane (#45)

  • Fix install of Eigen for CI wheel building (#44)

Contributors

This release contains contributions from (in alphabetical order):

Tom Bromley, Josh Izaac, Antal Száva

Release 0.11.0

18 Aug 10:06
e1df3fe
Compare
Choose a tag to compare

Initial release.

Contributors:

Tom Bromley, Josh Izaac, Nathan Killoran, Antal Száva