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
The problem is that SynthesiseTK (i.e. synthesise_tk) does the TK2 rebase first, which makes it harder for the subsequent optimisations to work. Same thing applies to synthesise_tket.
I think this behaviour might have a considerable impact on performance since these rebase passes are often ran first. For example, SynthesiseTK in FullPeepholeOptimise and the pytket-quantinuum level 1 pass.
The text was updated successfully, but these errors were encountered:
I've found similar issues with compiling to TK2 as a target. As an example, SynthesiseTK or the common pytket-quantinuum passes aren't able to clock that XXPhase(a,0,1).YYPhase(b,0,1).ZZPhase(c,0,1) == TK2(a,b,c,0,1).
Or, running FullPeepholeOptimise on YYPhase(b,0,1) returns a TK2(b,0,0,0,1) with a bunch of TK1 wrappers, rather than TK2(0,b,0,0,1). In the FullPeepholeOptimise case, it loses track when converting circuits to CX & TK1 when calling CliffordSimp and is unable to notice and recover the reduced gates.
I agree with the observation that these scenarios could be considerably impacting gate count performance. I'm wondering how far we can get with a new pass that:
Is able to merge TK1 with TK2 by changing the basis of rotations in TK2
But original
c
should be easily reduced to identity with:The problem is that
SynthesiseTK
(i.e.synthesise_tk
) does the TK2 rebase first, which makes it harder for the subsequent optimisations to work. Same thing applies tosynthesise_tket
.I think this behaviour might have a considerable impact on performance since these rebase passes are often ran first. For example,
SynthesiseTK
inFullPeepholeOptimise
and thepytket-quantinuum level 1
pass.The text was updated successfully, but these errors were encountered: