You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
optimised one-qubit Paulis to use applyCompMatr1 (#682)
as per #638. The previous use of the Pauli-specific multi-qubit backend logic was suboptimal for single-target since it involved superfluous per-amplitude evaluation of bitstring parity. This introduced a performance regression in single-core QuEST v4 since v3 which used single-target matrix logic.
This affects the performance of all explicitly single-target Pauli functions. Specifically:
- applyPauliX()
- applyControlledPauliX()
- applyMultiControlledPauliX()
- applyMultiStateControlledPauliX()
- applyPauliY()
- applyControlledPauliY()
- applyMultiControlledPauliY()
- applyMultiStateControlledPauliY()
- applyMultiStateControlledPauliX()
- applyPauliZ()
- applyControlledPauliZ()
- applyMultiControlledPauliZ()
- applyMultiStateControlledPauliZ()
- applyRotateX()
- applyControlledRotateX()
- applyMultiControlledRotateX()
- applyMultiStateControlledRotateX()
- applyRotateY()
- applyControlledRotateY()
- applyMultiControlledRotateY()
- applyMultiStateControlledRotateY()
- applyMultiStateControlledRotateX()
- applyRotateZ()
- applyControlledRotateZ()
- applyMultiControlledRotateZ()
- applyMultiStateControlledRotateZ()
which are concisely summarised as X cX ccX csX Y cY ccY csY Z cZ ccZ csZ Rx cRx ccRx csRx Ry cRy ccRy csRy Rz cRz ccRz csRz.
Beware this does not affect when incidentally passing a single-target through functions which can accept many, such as applyPauliStr() and applyPauliGadget(). Note too that further changes are expected necessary to recover single-core v3 performance.
0 commit comments