https://github.com/PennyLaneAI/pennylane-lightning

The PennyLane-Lightning plugin provides a fast state-vector simulator written in C++ for use with PennyLane

APACHE-2.0 License

Downloads
224.1K
Stars
82
Committers
30
https://github.com/PennyLaneAI/pennylane-lightning - Release 0.23.0

Published by chaeyeunpark over 2 years ago

Release 0.23.0

New features since last release

  • Add generate_samples() to lightning. (#247)

  • Add Lightning GBenchmark Suite. (#249)

  • Support runtime and compile information. (#253)

Improvements

  • Add ENABLE_BLAS build to CI checks. (#249)

  • Add more clang-tidy checks and kernel tests. (#253)

  • Add C++ code coverage to CI. (#265)

  • Skip over identity operations in "lightning.qubit". (#268)

Bug fixes

  • Update tests to remove JacobianTape. (#260)

  • Fix tests for MSVC. (#264)

  • Fix #include <cpuid.h> for PPC and AArch64 in Linux. (#266)

  • Remove deprecated tape execution methods. (#270)

  • Update qml.probs in test_measures.py. (#280)

Contributors

This release contains contributions from (in alphabetical order):
Ali Asadi, Chae-Yeun Park, Lee James O'Riordan, and Trevor Vincent

https://github.com/PennyLaneAI/pennylane-lightning - Release 0.22.1

Published by mlxd over 2 years ago

Bug fixes

  • Ensure qml.Identity kernel is registered to C++ dispatcher. (#275)
https://github.com/PennyLaneAI/pennylane-lightning - Release 0.22.0

Published by mlxd over 2 years ago

New features since last release

Improvements

  • Update quantum tapes serialization and Python tests. (#239)

  • Clang-tidy is now enabled for both tests and examples builds under Github Actions. (#237)

  • The return type of StateVectorBase data is now derived-class defined. (#237)

  • Update adjointJacobian and VJP methods. (#222)

  • Set GitHub workflow to upload wheels to Test PyPI. (#220)

  • Finalize the new kernel implementation. (#212)

Bug fixes

  • Fix for OOM errors when using adjoint with large numbers of observables. (#221)

  • Add virtual destructor to C++ state-vector classes. (#200)

  • Fix a bug in Python tests with operations' matrix calls. (#238)

  • Refactor utility header and fix a bug in linear algebra function with CBLAS. (#228)

Contributors

This release contains contributions from (in alphabetical order):

Ali Asadi, Chae-Yeun Park, Lee James O'Riordan

https://github.com/PennyLaneAI/pennylane-lightning - Release 0.21.0

Published by mlxd over 2 years ago

New features since last release

  • Add C++ only benchmark for a given list of gates. (#199)

  • Wheel-build support for Python 3.10. (#186)

  • C++ support for probability, expectation value and variance calculations. (#185)

Improvements

  • setup.py adds debug only when --debug is given (#208)

  • Add new highly-performant C++ kernels for quantum gates. (#202)

The new kernels significantly improve the runtime performance of PennyLane-Lightning
for both differentiable and non-differentiable workflows. Here is an example workflow
using the adjoint differentiation method with a circuit of 5 strongly entangling layers:

import pennylane as qml
from pennylane import numpy as np
from pennylane.templates.layers import StronglyEntanglingLayers
from numpy.random import random
np.random.seed(42)
n_layers = 5
n_wires = 6
dev = qml.device("lightning.qubit", wires=n_wires)

@qml.qnode(dev, diff_method="adjoint")
def circuit(weights):
    StronglyEntanglingLayers(weights, wires=list(range(n_wires)))
    return [qml.expval(qml.PauliZ(i)) for i in range(n_wires)]

init_weights = np.random.random(StronglyEntanglingLayers.shape(n_layers=n_layers, n_wires=n_wires))
params = np.array(init_weights,requires_grad=True)
jac = qml.jacobian(circuit)(params)

The latest release shows improved performance on both single and multi-threaded evaluations!

  • Ensure debug info is built into dynamic libraries. (#201)

Documentation

  • New guidelines on adding and benchmarking C++ kernels. (#202)

Bug fixes

  • Update clang-format version (#219)

  • Fix failed tests on Windows. (#218)

  • Fix failed tests for the non-binary wheel. (#213)

  • Add virtual destructor to C++ state-vector classes. (#200)

Contributors

This release contains contributions from (in alphabetical order):

Ali Asadi, Amintor Dusko, Chae-Yeun Park, Lee James O'Riordan

https://github.com/PennyLaneAI/pennylane-lightning - Release v0.20.2

Published by mlxd almost 3 years ago

  • Introduce CY kernel to Lightning to avoid issues with decomposition & adjoint. (#203)
https://github.com/PennyLaneAI/pennylane-lightning - Release 0.20.1

Published by mlxd almost 3 years ago

Bug fixes

  • Fix missing header-files causing build errors in algorithms module.
    (#193)

  • Fix failed tests for the non-binary wheel.
    (#191)

https://github.com/PennyLaneAI/pennylane-lightning - Release 0.20.0

Published by mlxd almost 3 years ago

What's Changed

New Contributors

https://github.com/PennyLaneAI/pennylane-lightning - Release 0.19.0

Published by mlxd almost 3 years ago

What's Changed

New Contributors

Full Changelog: https://github.com/PennyLaneAI/pennylane-lightning/compare/v0.18.0...v0.19.0

https://github.com/PennyLaneAI/pennylane-lightning - Release 0.18.0

Published by mlxd about 3 years ago

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

https://github.com/PennyLaneAI/pennylane-lightning - Release 0.17.0

Published by antalszava about 3 years ago

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

https://github.com/PennyLaneAI/pennylane-lightning - Release 0.15.1

Published by antalszava over 3 years ago

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

https://github.com/PennyLaneAI/pennylane-lightning - Release 0.15.0

Published by josh146 over 3 years ago

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.

https://github.com/PennyLaneAI/pennylane-lightning - Release 0.14.1

Published by antalszava over 3 years ago

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

https://github.com/PennyLaneAI/pennylane-lightning - Release 0.14.0

Published by josh146 over 3 years ago

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

https://github.com/PennyLaneAI/pennylane-lightning - Release 0.12.0

Published by josh146 about 4 years ago

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

https://github.com/PennyLaneAI/pennylane-lightning - Release 0.11.0

Published by trbromley about 4 years ago

Initial release.

Contributors:

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

Package Rankings
Top 10.93% on Pypi.org
Top 6.66% on Proxy.golang.org
Top 34.98% on Conda-forge.org
Related Projects