Published October 14, 2025
| Version v4.2.0
Software
Open
QuEST-Kit/QuEST: v4.2.0
Authors/Creators
- 1. University of Oxford
- 2. Imperial College London & Quantum Motion
- 3. @HQSQuantumSimulations
- 4. @EPCCed
- 5. The University of Edinburgh
- 6. @stfc
- 7. RIKEN
- 8. @qotlabs
- 9. University of Edinburgh
- 10. AMD
- 11. University of Coimbra
Description
Overview
This release adds exciting new Trotter functionality, including imaginary-time and Lindbladian simulation, as well as functions for more general manipulation of density matrices (like left or right-applying operators). It also patches critical performance regressions in CPU simulation, a maths error in the Trotter functions, and build issues when installing QuEST.
New features
- Added real, imaginary and noisy/open (Lindblad) time evolution via Trotterisation (#647). Specifically:
- Added
applyNonUnitaryPauliGadget()which permits rotating about a Pauli string by a complex angle, effecting a non-unitary operation (#637). - Added
applyTrotterizedNonUnitaryPauliStrSumGadget()which effectsexp(i x H)wherexis any complex scalar (#647). - Added controlled Trotter functions (d4706b92a4f66cc541e6ba1a9f9bde0c4d85a075, 2110b745bddaafa4554996b537ad7b0ec2fcc9c7, 211d4e8a0030501bf71bc6258b22eb256ba47f23), i.e.
applyTrotterizedControlledPauliStrSumGadget()applyTrotterizedMultiControlledPauliStrSumGadget()applyTrotterizedMultiStateControlledPauliStrSumGadget()
- Added optimised functions to prepare superpositions and mixtures of an arbitrary number of
Qureg(d4a5714e76f00d760f146b7013de2e570b278e92). Specifically: - Added environment variables
PERMIT_NODES_TO_SHARE_GPUandDEFAULT_VALIDATION_EPSILON, replacing their original macros, which now permits changing their values pre-runtime without recompilation (#653, #655). - Added left- and right-application of operators upon density matrices (#657, #668, c49f8d2ee92fd4055106daab2e36001d7ff3d498, 53c68280df3ce7bfb14a6e0fd047d2a3dab71c1b), i.e.
leftapplyCompMatr1()rightapplyCompMatr1()leftapplyCompMatr2()rightapplyCompMatr2()leftapplyCompMatr()rightapplyCompMatr()leftapplyDiagMatr1()rightapplyDiagMatr1()leftapplyDiagMatr2()rightapplyDiagMatr2()leftapplyDiagMatr()rightapplyDiagMatr()leftapplyDiagMatrPower()rightapplyDiagMatrPower()leftapplyFullStateDiagMatr()rightapplyFullStateDiagMatr()leftapplyFullStateDiagMatrPower()rightapplyFullStateDiagMatrPower()leftapplySwap()rightapplySwap()leftapplyPauliX()rightapplyPauliX()leftapplyPauliY()rightapplyPauliY()leftapplyPauliZ()rightapplyPauliZ()leftapplyPauliStr()rightapplyPauliStr()leftapplyPauliGadget()rightapplyPauliGadget()leftapplyPhaseGadget()rightapplyPhaseGadget()leftapplyMultiQubitNot()rightapplyMultiQubitNot()leftapplyQubitProjector()rightapplyQubitProjector()leftapplyMultiQubitProjector()rightapplyMultiQubitProjector()leftapplyPauliStrSum()rightapplyPauliStrSum()
- Function
reportQuESTEnv()will now additionally display the available RAM (#636).
Patches
- Restored NUMA awareness, greatly improving multithreaded CPU performance (#658).
- Patched a performance regression (from QuEST v3) in CPU simulation, related to complex arithmetic (60f9b3a153b52430286e555d75d5defc6c41a7b5).
- Patched a performance regression (from QuEST v3) in the one-qubit Pauli functions, by redirecting them to make use of the one-qubit dense matrix functions (as performed by v3) (#682).
- Patched
applyTrotterizedPauliStrSumGadget()to effectexp(i t H)as documented, whereas it previously erroneously effectedexp(-i t H)(#647). - Patched Trotterisation of
order >= 4. Previously, theorder >= 4scenario of Trotterisation did not correctly invoke recursion, but instead called first order Trotterisation five times without symmetrisation. This meant passingorder=4erroneously excluded symmetrisation (halving the Trotter depth), and passingorder>=6merely performed unsymmetrised fourth-order Trotterisation (e0a0e96bb183d6d6fc9d4221cb06f93caf0b4d65). - Patched installation of QuEST, which now correctly records the compile-time configuration. Beware that several macros became exclusively cmake options (#645, #685).
- The unit test of
createFullStateDiagMatr()'s input validation now expects the correct error message (aa11c23f39210445390d9d5c460c250a6ec57931), and does not break CUDA execution thereafter (37e222ea2f3526d29cb14b01c319f4fabb62ec7e).
Other changes
- Attached boolean field
isCuQuantumEnabledto theQuESTEnvstruct, so that it can be determined at runtime whether or not the cuQuantum GPU backend is being utilised. This is also now reported byreportQuESTEnv()(c357267563e8fa9701908f6ff8057c1f7277df63). - Made
createPauliStrSum()validate ahead of time whether it can fit the necessary data structures into RAM (ca6e9f824ec8578f916e28ab9e4b5a16b76a98e9). - Updated the dynamics examples to use the new evolution functions (19e18b2f9cae8d8f775746f038d693a22bc4b6d3).
- Deprecated
setQuregToSuperposition()since superseded by the newsetQuregToWeightedSum()(ab8b5603abeea8da52949edeb43005fc37d66d9a). - Added
docs/news.md(5bd864b5881ab783465bde3aebf2195216641ec1). - Added yet more missing documentation (but the battle continues!) (cb682b239746ab239fd61ac3aaafe5af722437a3)
New contributors
This release contained patches from new contributors:
- Mai Đức Khang in #636.
- Diogo Pratas Maia in #637.
Files
QuEST-Kit/QuEST-v4.2.0.zip
Files
(1.5 MB)
| Name | Size | Download all |
|---|---|---|
|
md5:b6638df8e546098dd7840b02f8cec46d
|
1.5 MB | Preview Download |
Additional details
Related works
- Is supplement to
- Software: https://github.com/QuEST-Kit/QuEST/tree/v4.2.0 (URL)
Software
- Repository URL
- https://github.com/QuEST-Kit/QuEST