Changelog¶
0.12.0 (May 2025)¶
New feature:
MPSxGatenow supports the application ofCnXandPauliExpBoxgates when passed toapply_gate.New feature: can now use
get_entanglement_entropyon a virtual bond of an MPS.Added warnings on the incompatibility between
vdotandprepare_circuit_mps.Updated pytket minimum version requirement to 2.4.1.
0.11.1 (March 2025)¶
Bug fix:
kill_thresholdno longer ignored when usingapply_unitary.Update pytket minimium version requirement to 2.0.1.
0.11.0 (March 2025)¶
New feature:
Configfrom thestructured_statemodule now accepts akill_thresholdparameter that the user can set to automatically abort simulations when their fidelity estimate drops below the specified threshold.New feature: a log file can now be specified as an alternative to printing the debug messages to standard stream.
Updated pytket minimum version requirement to 2.0.0.
0.10.2 (February 2025)¶
Small performance improvements on non-adjacent two-qubit gate application.
Contrained pytket version to 1.x.
Updated pytket version requirement to 1.39.
0.10.1 (December 2024)¶
Now supporting
ClExproperations (the new version of tket’sClassicalExpBox).Updated pytket version requirement to 1.38.0.
0.10.0 (October 2024)¶
New API:
GeneralBraOpKetfor exact calculation of arbitrary<bra|op|ket>values. Can be used to calculate inner products, expectation values and arbitrary matrix elements.New feature: both
GeneralStateandGeneralBraOpKetadmit circuits with parameterised gates.New feature:
GeneralStatehas a new methodget_amplitudeto obtain the amplitude of computational basis states.New feature:
GeneralStateandCuTensorNetShotsBackendnow support RNG seeds for sampling.Docs: three tutorials added to the documentation.
Deprecated
TensorNetworkobject. It is still available for the sake of backwards compatibility, but it has been removed from doc pages.
0.9.0 (October 2024)¶
Updated pytket version requirement to 1.33.
0.8.0 (September 2024)¶
- API breaking changes
Removed
use_kahyparoption fromConfig. It can still be set via thesimulateoptioncompilation_params.
New feature:
simulatenow accepts pytket circuits withMeasure,Reset,Conditional,ClassicalExpBoxand more classical operations. You can now retrieve classical bit values usingget_bits.When calling
simulate, the gates on the circuit are no longer sorted by default. Usecompilation_params["sort_gates"] = Trueto recover this behaviour, which is now deprecated.StructuredStatenow supports simulation of single qubit circuits.Some bugfixes on
MPSxMPOrelating to measurement and relabelling qubits. The bug was caused due to these functions not guaranteeing the MPO was applied before their action.- Documentation fixes:
apply_qubit_relabellingnow appears in the documentation.add_qubitremoved from documentation ofMPSxMPO, since it is not currently supported.
0.7.1 (July 2024)¶
New official documentation site.
Backend methods can now be given a
scratch_fractionargument to configure the amount of GPU memory allocated to cuTensorNet contraction. Users can also configure the values of theStateAttributeandSamplerAttributefrom cuTensornet via the backend interface.Fixed a bug causing the logger to fail displaying device properties.
0.7.0 (July 2024)¶
- API breaking changes
Renamed
CuTensorNetBackendtoCuTensorNetStateBackend.Moved
get_operator_expectation_valueandget_circuit_overlapfrombackendssubmodule togeneral_statesubmodule.Warning
TensorNetworkobject will soon be deprecated in favour of the newGeneralState.
New API:
GeneralStatefor exact simulation of circuits via contraction-path optimisation. Currently supportsget_statevector(),expectation_value()andsample().New feature:
CuTensorNetShotsBackendfor simulation of circuit shots.New feature: MPS algorithms
MPSxGateandMPSxMPOnow support simulation of two-qubit gates acting on non-adjacent qubits.New feature:
add_qubitto add fresh qubits at specified positions in anMPS.New feature: added an option to
measureto toggle destructive measurement on/off. Currently only supported forMPS.New feature: a seed can now be provided to
Configobjects, providing reproducibility acrossStructuredStatesimulations.New feature:
apply_unitaryboth forMPSandTTNto apply an arbitrary unitary matrix, rather than apytket.Command.New feature:
apply_qubit_relabellingboth forMPSandTTNto change the name of their qubits. This is now used withinsimulateto take into account the action of implicit SWAPs in pytket circuits (no additional SWAP gates are applied).Updated pytket version requirement to 1.30.
0.6.1 (April 2024)¶
When using
simulatewithTTNxGatealgorithm, the initial partition is obtained using NetworkX instead of KaHyPar by default. This makes setup easier and means thatTTNxGatecan now be used when installing from PyPI. KaHyPar can still be used ifuse_kahyparfromConfigis set to True.Updated pytket version requirement to 1.27.
0.6.0 (April 2024)¶
New feature: Tree Tensor Network (TTN) simulator, supporting both fixed
chiandtruncation_fidelity. Calculation of single amplitudes is supported byget_amplitudeand inner products byvdot. Measurement and postselection are not yet supported.New API: both
MPSandTTNshare a common interface:StructuredState. Import paths have changed, multiple classes have been renamed:ConfigMPSis nowConfig,ContractionAlgis nowSimulationAlgorithm. Documentation has been updated accordingly.Canonicalisation of MPS is now always applied before a two-qubit gate. We found that this tends to reduce runtime due to canonicalisation decreasing virtual bond dimension.
Two-qubit gates are now decomposed (SVD) before applying them to remove null singular values (e.g. in
XXPhasegates).Fixed a bug on copying an
MPSiftruncation_fidelitywas set.Fixed a bug on
CuTensorNetHandlethat would prevent it from working when the device set was different from the default one (dev=0) and when usingcuTensorNet>=2.3.0.Fixed a bug on
TensorNetworkdue to unsupportedCreateoperation.Updated pytket version requirement to 1.26.
0.5.4 (January 2024)¶
Updated pytket version requirement to 1.24.
Python 3.12 support added, 3.9 dropped.
0.5.3 (January 2024)¶
Updated pytket version requirement to 1.23.
0.5.2 (December 2023)¶
MPSsimulation with fixedtruncation_fidelitynow uses the corresponding truncation primitive from cuQuantum (v23.10).Updated pytket version requirement to 1.22.
0.4.0 (October 2023)¶
API Update. Configuration of
MPSsimulation parameters is now done viaConfigMPS.Added a
value_of_zeroparameter toConfigMPSfor the user to indicate the threshold below which numbers are so small that can be interpreted as zero.Added a logger to MPS methods. Use it by setting
loglevelinConfigMPS.Improved performance of contraction across
MPSmethods by hardcoding the contraction paths.Fixed a bug that caused more MPS canonicalisation than strictly required.
Fixed a bug where
simulatewould not apply the last batch of gates when usingMPSxMPO.
0.3.0 (September 2023)¶
Added MPS sampling feature.
Refactored MPS module for better maintainability and extendability.
Tensorclass removed from the API since it is no longer necessary.
0.2.1 (August 2023)¶
Improved backend gate set to allow for more gate types.
Fixed a bug in
apply_gateof MPS algorithms that would cause internal dimensions to be tracked wrongly in certain edge cases, causing a crash.
0.2.0 (July 2023)¶
Added post selection capability for expectation value tensor networks.
Added MPS simulation approaches, supporting two contraction algorithms (gate-by-gate and DMRG-like). Supports exact simulation, as well as approximate simulation with either fixed virtual bond dimension or target gate fidelity.
0.1.0 (June 2023)¶
Initial implementation of the converter and backend modules for use on a single GPU.