The PennyLane-Lightning plugin provides a fast state-vector simulator written in C++ for use with PennyLane
APACHE-2.0 License
Published by vincentmr 4 months ago
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)
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)
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)
lightning.tensor
. (#756)
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)
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
Published by AmintorDusko 6 months ago
Add compile-time support for AVX2/512 streaming operations in lightning.qubit
. (#664)
lightning.kokkos
supports mid-circuit measurements. (#672)
Add dynamic linking to LAPACK/OpenBlas shared objects in scipy.libs
for both C++ and Python layer. (#653)
lightning.qubit
supports mid-circuit measurements. (#650)
Add finite shots support in lightning.qubit2
. (#630)
Add collapse
and normalize
methods to the StateVectorLQubit
classes, enabling "branching" of the wavefunction. Add methods to create and seed an RNG in the Measurements
modules. (#645)
Add two new python classes (LightningStateVector and LightningMeasurements) to support lightning.qubit2
. (#613)
Add analytic-mode qml.probs
and qml.var
support in lightning.qubit2
. (#627)
Add LightningAdjointJacobian
to support lightning.qubit2
. (#631)
Add lightning.qubit2
device which uses the new device API. (#607) (#628)
Add Vector-Jacobian Product calculation support to lightning.qubit
. (#644)
Add support for using new operator arithmetic as the default. (#649)
Split Lightning-Qubit and Lightning-Kokkos CPU Python tests with pytest-split
. Remove SERIAL
from Kokkos' exec_model
matrix. Remove all
from Lightning-Kokkos' pl_backend
matrix. Move clang-tidy
checks to tidy.yml
. Avoid editable pip
installations. (#696)
Update lightning.gpu
and lightning.kokkos
to raise an error instead of falling back to default.qubit
. (#689)
Add paths
directives to test workflows to avoid running tests that cannot be impacted by changes. (#699) (#695)
Move common components of /src/simulator/lightning_gpu/utils/
to /src/utils/cuda_utils/
. (#676)
Deprecate static LAPACK linking support. (#653)
Migrate lightning.qubit
to the new device API. (#646)
Introduce ci:build_wheels
label, which controls wheel building on pull_request
and other triggers. (#648)
Remove building wheels for Lightning Kokkos on Windows. (#693)
Add tests for Windows Wheels, fix ill-defined caching, and set the proper backend for lightning.kokkos
wheels. (#693)
Replace string comparisons by isinstance
checks where possible. (#691)
Refactor cuda_utils
to remove its dependency on custatevec.h
. (#681)
Add test_templates.py
module where Grover and QSVT are tested. (#684)
Create cuda_utils
for common usage of CUDA related backends. (#676)
Refactor lightning_gpu_utils
unit tests to remove the dependency on statevector class. (#675)
Upgrade GitHub actions versions from v3 to v4. (#669)
Initialize the private attributes gates_indices_
and generators_indices_
of StateVectorKokkos
using the definitions of the Pennylane::Gates::Constant
namespace. (#641)
Add isort
to requirements-dev.txt
and run before black
upon make format
to sort Python imports. (#623)
Improve support for new operator arithmetic with QuantumScriptSerializer.serialize_observables
. (#670)
Add workflow_dispatch
to wheels recipes; allowing developers to build wheels manually on a branch instead of temporarily changing the headers. (#679)
Add the ENABLE_LAPACK
compilation flag to toggle dynamic linking to LAPACK library. (#678)
Fix wire order permutations when using qml.probs
with out-of-order wires. (#707)
Lightning Qubit once again respects the wire order specified on device instantiation. (#705)
dynamic_one_shot
was refactored to use SampleMP
measurements as a way to return the mid-circuit measurement samples. LightningQubit
's simulate
is modified accordingly. (#694)
LightningQubit
correctly decomposes state prep operations when used in the middle of a circuit. (#687)
LightningQubit
correctly decomposes qml.QFT
and qml.GroverOperator
if len(wires)
is greater than 9 and 12 respectively. (#687)
Specify isort
--py
(Python version) and -l
(max line length) to stabilize isort
across Python versions and environments. (#647)
Fix random coverage xml
CI issues. (#635)
lightning.qubit
correctly decomposed state preparation operations with adjoint differentiation. (#661)
Fix the failed observable serialization unit tests. (#683)
Update the LightningQubit
new device API to work with Catalyst. (#665)
Update the version of codecov-action
to v4 and fix the CodeCov issue with the PL-Lightning check-compatibility actions. (#682)
Refactor of dev prerelease auto-update-version workflow. (#685)
Remove gates unsupported by catalyst from toml file. (#698)
Increase tolerance for a flaky test. (#703)
This release contains contributions from (in alphabetical order):
Ali Asadi, Amintor Dusko, Thomas Germain, Christina Lee, Erick Ochoa Lopez, Vincent Michaud-Rioux, Rashid N H M, Lee James O'Riordan, Mudit Pandey, Shuli Shu
Published by AmintorDusko 8 months ago
adjoint
gate parameter to apply qml.Adjoint
operations instead of matrix methods in lightning.qubit
.Fix qml.Adjoint
support in lightning.gpu
and lightning.kokkos
.
(#632)
Fix finite shots support in lightning.qubit
, lightning.gpu
and lightning.kokkos
. The bug would impact calculations with measurements on observables with non-trivial diagonalizing gates and calculations with shot vectors.
(#632)
This release contains contributions from (in alphabetical order):
Vincent Michaud-Rioux
Published by AmintorDusko 8 months ago
All backends now support GlobalPhase
and C(GlobalPhase)
in forward pass.
(#579)
Add Hermitian observable support for shot-noise measurement and Lapack support.
(#569)
lightning.gpu
to CUDA 12.Expand error values and strings returned from CUDA libraries.
(#617)
C(MultiRZ)
and C(Rot)
gates are natively supported (with LM
kernels).
(#614)
Add adjoint support for GlobalPhase
in Lightning-GPU and Lightning-Kokkos.
(#615)
Lower the overheads of Windows CI tests.
(#610)
Decouple LightningQubit memory ownership from numpy and migrate it to Lightning-Qubit managed state-vector class.
(#601)
Expand support for Projector observables on Lightning-Kokkos.
(#601)
Split Docker build cron job into two jobs: master and latest. This is mainly for reporting in the plugin-test-matrix
repo.
(#600)
The BlockEncode
operation from PennyLane is now supported on all Lightning devices.
(#599)
OpenMP acceleration can now be enabled at compile time for all lightning.qubit
gate kernels using the "-DLQ_ENABLE_KERNEL_OMP=1" CMake argument.
(#510)
Enable building Docker images for any branch or tag. Set the Docker build cron job to build images for the latest release and master
.
(#598)
Enable choosing the PennyLane-Lightning version and disabling push to Docker Hub in the Docker build workflow. Add a cron job calling the Docker build workflow.
(#597)
Pull Kokkos v4.2.00 from the official Kokkos repository to test Lightning-Kokkos with the CUDA backend.
(#596)
Remove deprecated MeasurementProcess.name.
(#605)
Downgrade auditwheel due to changes with library exclusion list.
(#620)
List GlobalPhase
gate in each device's TOML file.
(#615)
Lightning-GPU's gate cache failed to distinguish between certain gates.
For example, MultiControlledX([0, 1, 2], "111")
and MultiControlledX([0, 2], "00")
were applied as the same operation.
This could happen with (at least) the following gates: QubitUnitary
,ControlledQubitUnitary
,MultiControlledX
,DiagonalQubitUnitary
,PSWAP
,OrbitalRotation
.
(#579)
Ensure the stopping condition decompositions are respected for larger templated QFT and Grover operators.
(#609)
Move concurrency group specifications from reusable Docker build workflow to the root workflows.
(#604)
Fix lightning-kokkos-cuda
Docker build and add CI workflow to build images and push to Docker Hub.
(#593)
Update jax.config imports.
(#619)
Fix apply state vector when using a Lightning handle.
(#622)
Pinning Pytest to a version compatible with Flaky.
(#624)
This release contains contributions from (in alphabetical order):
Amintor Dusko, David Ittah, Vincent Michaud-Rioux, Lee J. O'Riordan, Shuli Shu, Matthew Silverman
Published by mlxd 10 months ago
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)
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)
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)
Fixed a small typo in the documentation page for the PennyLane-Lightning GPU device. (#563)
Add OpenGraph social preview for Lightning docs. (#574)
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 https://github.com/PennyLaneAI/pennylane-lightning-gpu/pull/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)
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
Published by mlxd 12 months ago
This release contains contributions from (in alphabetical order):
Lee J. O'Riordan
Published by vincentmr 12 months ago
Add documentation updates for the lightning_gpu
backend. (#525)
Add SparseHamiltonian
support for Lightning-Qubit and Lightning-GPU. (#526)
Add SparseHamiltonian
support for Lightning-Kokkos. (#527)
Integrate python/pybind layer of distributed Lightning-GPU into the Lightning monorepo with python unit tests. (#518)
Integrate the distributed C++ backend of Lightning-GPU into the Lightning monorepo. (#514)
Integrate Lightning-GPU into the Lightning monorepo. The new backend is named lightning_gpu
and includes all single-GPU features. (#499)
Build Linux wheels for Lightning-GPU (CUDA-11). (#517)
Add Dockerfile
in docker
and make docker
workflow in Makefile
. The Docker images and documentation are available on DockerHub. (#496)
Add mid-circuit state preparation operation tests. (#495)
Improve Python testing for Lightning-GPU (+MPI) by adding jobs in Actions files and adding Python tests to increase code coverage. (#522)
Add support for pip install pennylane-lightning[kokkos]
for the OpenMP backend. (#515)
Update setup.py
to allow for multi-package co-existence. The PennyLane_Lightning
package now is the responsible for the core functionality, and will be depended upon by all other extensions. (#504)
Redesign Lightning-Kokkos StateVectorKokkos
class to use Kokkos RangePolicy
together with special functors in applyMultiQubitOp
to apply 1- to 4-wire generic unitary gates. For more than 4 wires, the general implementation using Kokkos TeamPolicy
is employed to yield the best all-around performance. (#490)
Redesign Lightning-Kokkos Measurements
class to use Kokkos RangePolicy
together with special functors to obtain the expectation value of 1- to 4-wire generic unitary gates. For more than 4 wires, the general implementation using Kokkos TeamPolicy
is employed to yield the best all-around performance. (#489)
Add tests to increase Lightning-Kokkos coverage. (#485)
Add memory locality tag reporting and adjoint diff dispatch for lightning.qubit
statevector classes. (#492)
Add support for dependent external packages to C++ core. (#482)
Add support for building multiple backend simulators. (#497)
Add tests_gpu.yml
workflow to test the Lightning-Kokkos backend with CUDA-12. (#494)
Implement LM::GeneratorDoubleExcitation
, LM::GeneratorDoubleExcitationMinus
, LM::GeneratorDoubleExcitationPlus
kernels. Lightning-Qubit default kernels are now strictly from the LM
implementation, which requires less memory and is faster for large state vectors. (#512)
Add workflows validating compatibility between PennyLane and Lightning's most recent stable releases and development (latest) versions. (#507) (#498)
Introduce timeout-minutes
in various workflows, mainly to avoid Windows builds hanging for several hours. (#503)
Cast integral-valued arrays to the device's complex type on entry in _preprocess_state_vector
to ensure the state is correctly represented with floating-point numbers. (#501)
Update DefaultQubit
to DefaultQubitLegacy
on Lightning fallback. (#500)
Enums defined in GateOperation.hpp
start at 1
(previously 0
). ::BEGIN
is introduced in a few places where it was assumed 0
accordingly. (#485) ::BEGIN
was later reverted to 0
, keeping the rest of the changes, to fix a compatibility issue with Catalyst. (#521)
Enable pre-commit hooks to format all Python files and linting of all Python source files. (#485)
Re-add support for pip install pennylane-lightning[gpu]
. (#515)
Switch most Lightning-Qubit default kernels to LM
. Add LM::multiQubitOp
tests, failing when targeting out-of-order wires clustered close to num_qubits-1
. Fix the LM::multiQubitOp
kernel implementation by introducing a generic revWireParity
routine and replacing the bitswap
-based implementation. Mimic the changes fixing the corresponding multiQubitOp
and expval
functors in Lightning-Kokkos. (#511)
Fix RTD builds by removing unsupported system_packages
configuration option. (#491)
This release contains contributions from (in alphabetical order):
Ali Asadi, Amintor Dusko, Vincent Michaud-Rioux, Lee J. O'Riordan, Shuli Shu
Published by mlxd about 1 year ago
Refactor LKokkos Measurements
class to use (fast) specialized functors whenever possible. (#481)
Merge Lightning Qubit and Lightning Kokkos backends in the new repository. (#472)
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)
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)
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)
This release contains contributions from (in alphabetical order):
Amintor Dusko, Christina Lee, Vincent Michaud-Rioux, Lee J. O'Riordan
Published by mlxd over 1 year ago
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)
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)
This release contains contributions from (in alphabetical order):
Vincent Michaud-Rioux, Lee J. O'Riordan, Chae-Yeun Park
Published by mlxd over 1 year ago
Add MCMC sampler.
(#384)
Serialize PennyLane's arithmetic operators when they are used as observables
that are expressed in the Pauli basis.
(#424)
qml.enable_return
documentation for more information on this change.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])
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)
This release contains contributions from (in alphabetical order):
Christina Lee, Vincent Michaud-Rioux, Lee James O'Riordan, Chae-Yeun Park, Matthew Silverman
Published by mlxd over 1 year ago
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)
Ensure error raised when asking for out of order marginal probabilities. Prevents the return of incorrect results. (#416)
Fix Github shields in README. (#402)
Amintor Dusko, Vincent Michaud-Rioux, Lee James O'Riordan, Chae-Yeun Park
Published by AmintorDusko over 1 year ago
This release contains contributions from (in alphabetical order):
Amintor Dusko
Published by mlxd almost 2 years ago
This release contains contributions from (in alphabetical order):
Lee J. O'Riordan
Published by mlxd almost 2 years ago
Improve Lightning package structure for external use as a C++ library. (#369)
Improve the stopping condition method. (#386)
This release contains contributions from (in alphabetical order):
Amintor Dusko, Lee J. O'Riordan
Published by mlxd almost 2 years ago
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)
This release contains contributions from (in alphabetical order):
Amintor Dusko, Chae-Yeun Park, Monit Sharma, Shuli Shu
Published by AmintorDusko about 2 years ago
Amintor Dusko
Published by mlxd about 2 years ago
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)
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)
This release contains contributions from (in alphabetical order):
Amintor Dusko, Christina Lee, Lee J. O'Riordan, Chae-Yeun Park
Published by mlxd about 2 years ago
We explicitly disable support for PennyLane's parameter broadcasting. #317
We explicitly remove support for PennyLane's Sum
, SProd
and Prod
as observables. (#326)
CI builders use a reduced set of resources and redundant tests for PRs. (#319)
Parallelize wheel-builds where applicable. (#314)
AVX2/512 kernels are now available on Linux/MacOS with x86-64 architecture. (#313)
This release contains contributions from (in alphabetical order):
Amintor Dusko, Christina Lee, Rashid N H M, Lee J. O'Riordan, Chae-Yeun Park
Published by maliasadi over 2 years ago
Add SingleExcitation
and DoubleExcitation
qchem gates and generators. (#289)
Add a new dispatch mechanism for future kernels. (#291)
Add IsingXY
gate operation. (#303)
Support qml.state()
in vjp and Hamiltonian in adjoint jacobian. (#294)
Codebase is now moving to C++20. The default compiler for Linux is now GCC10. (#295)
Minimum macOS version is changed to 10.15 (Catalina). (#295)
Split matrix operations, refactor dispatch mechanisms, and add a benchmark suite. (#274)
Add native support for the calculation of sparse Hamiltonians' expectation values. Sparse operations are offloaded to Kokkos and Kokkos-Kernels. (#283)
Device lightning.qubit
now accepts a datatype for a statevector. (#290)
dev1 = qml.device('lightning.qubit', wires=4, c_dtype=np.complex64) # for single precision
dev2 = qml.device('lightning.qubit', wires=4, c_dtype=np.complex128) # for double precision
Fix the issue with using available clang-format
version in format. (#288)
Fix a bug in the generator of DoubleExcitationPlus
. (#298)
This release contains contributions from (in alphabetical order):
Mikhail Andrenkov, Ali Asadi, Amintor Dusko, Lee James O'Riordan, Chae-Yeun Park, and Shuli Shu