Release 0.39.0
New features since last release
-
Add support for out-of-order
qml.probsinlightning.gpu. (#941) -
Add mid-circuit measurements support to
lightning.gpu's single-GPU backend. (#931) -
Integrate Lightning-GPU with Catalyst so that hybrid programs can be seamlessly QJIT-compiled and executed on this device following
pip install pennylane-lightning-gpu. (#928) -
Add
qml.Projectorobservable support via diagonalization to Lightning-GPU. (#894) -
Add 1-target wire controlled gate support to
lightning.tensor. Note thatcutensornetonly supports 1-target wire controlled gate as ofv24.08. A controlled gate with more than 1 target wire should be converted to dense matrix. (#880) -
Build and upload Lightning-Tensor wheels (x86_64, AARCH64) to PyPI. (#862) (#905)
-
Add Matrix Product Operator (MPO) for all gates support to
lightning.tensor. Note current C++ implementation only works for MPO sites data provided by users. (#859) -
Add shots measurement support to
lightning.tensor. (#852) -
Lightning-GPU and Lightning-Kokkos migrated to the new device API. (#853) (#810)
Breaking changes
-
Update MacOS wheel build to 13.0 for X86_64 and ARM due to the deprecation of MacOS-12 CI runners. (#969)
-
Deprecate
initSV()and addresetStateVector()from the C++ API Lightning-GPU. This is to remove thereset_stateadditional call in the Python layer. (#933) -
Deprecate PI gates implementation in Lightning-Qubit. The PI gates were the first implementation of gate kernels in
lightning.qubitusing pre-computed indices, prior to the development of LM (less memory) and AVX kernels. This deprecation is in favour of reducing compilation time and ensuring that Lightning-Qubit only relies on LM kernels in the dynamic dispatcher across all platforms. (#925) -
Remove PowerPC wheel build recipe for Lightning-Qubit. (#902)
-
Update MacOS wheel builds to require Monterey (12.0) or greater for x86_64 and ARM. This was required to update Pybind11 to the latest release (2.13.5) for enabling Numpy 2.0 support in Lightning. (#901)
-
Remove support for Python 3.9 for all Lightning simulators. (#891)
Improvements
-
Update the
lightning.tensorPython layer unit tests, aslightning.tensorcannot be cleaned up like other state-vector devices because the data is attached to the graph. It is recommended to use one device per circuit forlightning.tensor. (#971) -
Add joint check for the N-controlled wires support in
lightning.qubit. (#949) -
Optimize
GlobalPhaseandC(GlobalPhase)gate implementation inlightning.gpu. (#946) -
Add missing
liblightning_kokkos_catalyst.sowhen building Lightning-Kokkos in editable installation. (#945) -
Optimize the cartesian product to reduce the amount of memory necessary to set the
StatePrepin Lightning-Tensor. (#943) -
Update the
qml.probsdata-return in Lightning-GPU C++ API to align with other state-vector devices. (#941) -
Add zero-state initialization to both
StateVectorCudaManagedandStateVectorCudaMPIconstructors to remove thereset_statein the Python layer ctor and refactorsetBasisState(state, wires)in the C++ API. (#933) -
Add
setStateVector(state, wire)support to the Lightning-GPU C++ API. (#930) -
The
generate_samplesmethods oflightning.qubitandlightning.kokkoscan now take in a seed number to make the generated samples deterministic. This can be useful when, among other things, fixing flaky tests in CI. (#927) -
Remove dynamic decomposition rules for all Lightning devices. (#926)
-
Always decompose
qml.QFTin all Lightning devices. (#924) -
Uniform Python format to adhere PennyLane style. (#924)
-
Add the
ci:use-gpu-runnerGitHub label tolightning.kokkosGPU Testing CIs. (#916) -
Update the test suite to remove deprecated code. (#912)
-
Merge
lightning.gpuandlightning.tensorGPU tests in single Python and C++ CIs controlled by theci:use-gpu-runnerlabel. (#911) -
Skip the compilation of Lightning simulators and development requirements to boost the build of public docs up to 5x. (#904)
-
Build Lightning wheels in
Releasemode to reduce the binary sizes. (#903) -
Update Pybind11 to 2.13.5. (#901)
-
Migrate wheels artifacts to v4. (#893)
-
Update GitHub actions in response to a high-severity vulnerability. (#887)
-
Optimize and simplify controlled kernels in Lightning-Qubit. (#882)
-
Optimize gate cache recording for Lightning-Tensor C++ API. (#879)
-
Unify Lightning-Kokkos and Lightning-Qubit devices under a Lightning-Base abstracted class. (#876)
-
Smarter defaults for the
split_obsargument in the serializer. The serializer splits linear combinations into chunks instead of all their terms. (#873) -
Prefer
tomlkitovertomlfor building Lightning wheels, and choosetomliandtomllibovertomlwhen installing the package. (#857) -
Lightning-Kokkos gains native support for the
PauliRotgate. (#855)
Documentation
-
Update Lightning-Tensor installation docs and usage suggestions. (#971) (#972)
-
Update
README.rstinstallation instructions forlightning.gpuandlightning.tensor. (#957) -
Update
lightning.tensordocumentation to include all the new features added since pull request #756. The new features are: 1. Finite-shot measurements; 2. Expval-base quantities; 3. Support forqml.state()andqml.stateprep(); 4. Support for all gates support via Matrix Product Operator (MPO). (#909)
Bug fixes
-
Fix Lightning Kokkos test_device for
kokkos_argsfail for MacOS due tonp.complex256(#974) -
Fix PTM stable-latest related to
default.qubit.legacyand thelatestflag usage. (#961) (#966) -
Fix build failure for Lightning-Kokkos editable installation on MacOS due to
liblightning_kokkos_catalyst.socopy andliblightning_kokkos_catalyst.sonot copied to correct build path for editable installation. (#947) (#968) -
Add concept restriction to ensure
ConstMultinline function only hit with arithmetic-values times complex values. Fixes build failures with the test suite when enabling OpenMP, and disabling BLAS and Python under clang. (#936) -
Bug fix for
applyMatrixin Lightning-Tensor. Matrix operator data is not stored in thecuGateCacheobject to supportTensorProdobs with multipleHermitianobs. (#932) -
Bug fix for
_pauli_wordofQuantumScriptSerializer._pauli_wordcan processPauliWordobject:I. (#919) -
Bug fix for analytic
qml.probsin the Lightning-Tensor C++ API. (#906)
Contributors
This release contains contributions from (in alphabetical order):
Ali Asadi, Amintor Dusko, Diego Guala, Joseph Lee, Luis Alfredo Nuñez Meneses, Vincent Michaud-Rioux, Lee J. O'Riordan, Mudit Pandey, Shuli Shu, Haochen Paul Wang