Open inmzhang opened 2 months ago
I agree that this would be a very sensible and interesting addition. It might be too soon though. In my opinion, here are the steps we should focus on right now:
Template
refactoring,I think this feature is 1) not needed for the completion of our first goal and 2) can wait until we finished cleaning up the codebase. An argument for implementing that now (instead of waiting) is that this feature is, at its core, "just" a translator from LaSre to BlockGraph
, which only requires the API to create a BlockGraph
instance (i.e., a small portion of the API) and so might not be impacted too much by a refactor.
Any opinion?
Yes this should not be a goal for the near term and I should note that in the first place. I had conversation with Austin about LaSsynth
some times ago but forgot to write it up as an issue... And I do think it won't take too much work to implement this feature after finalizing and refactoring our library.
Would be great to get you to review the current status of this tool in a future meeting.
On Tue, Sep 3, 2024 at 12:27 AM Yiming Zhang @.***> wrote:
Yes this should not be a goal for the near term and I should note that in the first place. I had conversation with Austin about LaSsynth some times ago but forgot to write it up as an issue... And I do think it won't take too much work to implement this feature after finalizing and refactoring our library.
— Reply to this email directly, view it on GitHub https://github.com/QCHackers/tqec/issues/315#issuecomment-2325791640, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAKAXTF4ZMFE7SV63K4VI33ZUVQH7AVCNFSM6AAAAABNRFITYCVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDGMRVG44TCNRUGA . You are receiving this because you are subscribed to this thread.Message ID: @.***>
Is your feature request related to a problem? Please describe.
What is
LaSsynth
?LaSsynth
is a synthesis for lattice surgery subroutines. After specifying the desired inputs/outputs ports and the stabilizer flows, it will use a SAT solver to solve the internal structure of the lattice surgery construction under limited spacetime volume. You can take a look at this demo to learn more about it.Why is it useful for
tqec
?LaSsynth
provides a way to automatically construct a valid spacetime model but can not run simulations for it. Then it's natural to take the output ofLaSsynth
as the input oftqec
to run and verify the construction at the circuit level.LaSsynth
provides a text format representation(LaSre
) of the spacetime model and it can be taken as a starting point for the design of a portable text format oftqec
computation structure.LaSsynth
provides the functionality to convert aLaSre
file to a.gltf
model and visualized the model as well as the correlation surfaces.LaSsynth
provides the functionality to convert aLaSre
file to the corresponding zx diagrams(usingstimzx
) representation and verify the the stabilizer flows.How it can be used with
tqec
?LaSsynth
provides a representation of the Lattice Surgery subroutine in a text format calledLaSre
.LaSre of CNOT
It can be seen as a complete description of the structure of a 3D spacetime model or our
BlockGraph
. To be more specific:n_i/j/k
s specify the the spacetime volumen_p
/ports
/port_cubes
specify the number and positions of inputs/outputs of the subroutine. And these ports can corresponds to the virtual cubes in theBlockGraph
.n_s
/stabs
specifies the stabilizer flow generators. The concept of the stabilizer flow translates naturally to the correlation surface in the lattice surgery model. And it relates to the existing correlation subgraphs inBlockGraph
.ExistI/J/K
specifies the positions of block structures including the cubes and pipes.ColorI/J
specifies the type of the block structures.CorrIJ...
specifies the explicit correlation surfaces presented in each pipe for each stabilizer flows.NodeY
specifies the existence of the Y basis initialization/measurements, which currently is not implemented intqec
but is planned for sure.As above, the one-to-one translation between
LaSre
andBlockGraph
should be possible.Limitations
To integrate the two libraries, there are some problems that we need to solve in my mind:
LaSynth
is not allowed by default, but can be enabled with some changes to the code.tqec
, or turn off the option for now.LaSre
to represent theBlockGraph
, we need to be able to fill the ports with actual cubes, which corresponds to logical initialization/measurements that instantiate a subroutine into a real computation.