-
Notifications
You must be signed in to change notification settings - Fork 2.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add architecture aware re-synthesis transpilation passes #8769
Comments
Hello Arianne! This seems like a good way to pilot the new transpiler plugin interface and write an external plugin that can be added to the qiskit ecosystem. What do you think? |
Hi Luciano! Yeah, that sounds like a great idea. I hadn't heard about the transpiler plugins yet. Looking a bit closer at the existing code, the project would provide an alternative to How do you think we should go about building such a plugin? We could base it on And full disclosure. those papers I linked before are mine ;) |
There is ongoing work on adding a new plugin interface for more general synthesizing higher level objects like linear functions as a dual of the unitary synthesis plugin interface. You can see that in progress here: #8548 If you have any thoughts on what that interface should look like please feel free to review the pull request and leave comments. |
It would indeed be great to have additional linear and linear+phase resynthesis methods in Qiskit or in Qiskit ecosystem, so additional contributions are welcome! As @mtreinish pointed out, the plugin interface from #8548 should in theory enable easy integration of such methods in Qiskit, but it probably misses some key features at the current stage such as There is also a transpiler pass that collects blocks of CX and SWAP gates into FYI, an intern of Dmitri Maslov has also done some recent work on synthesizing linear functions targeting circuit depth, @ShellyGarion is currently working on incorporating these methods into Qiskit: #8568. |
Sorry it took a bit to get back to you. Considering all the on-going projects, from which branch can we best start implementing this feature? |
You can start your own repo from scratch or using this template https://github.com/qiskit-community/quantum-prototype-template. For examples, #8548 is a good starting point. |
If you have comment or suggestion about the interface, feel free to open a new issue with them. Closing this one as it will be implemented as plugin. |
It has been shown that, under certain conditions, it is more efficient to resynthesis parts of a circuit rather than attempting to route the circuit using SWAPs (https://arxiv.org/abs/1904.00633). It would be nice if the Qiskit transpiler contained one or more passes that do such a thing.
In particular, I would like to implement the PermRowCol algorithm (https://www.qplconference.org/proceedings2022/QPL_2022_paper_99.pdf) as a compiler pass that re-synthesizes the CNOT blocks in a circuit.
Later, other passes could be added, such as the re-synthesis of phase polynomials (CNOT+Rz circuits) (https://arxiv.org/abs/2004.06052).
The text was updated successfully, but these errors were encountered: