Skip to content
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 dedicated stage for high level synthesis to default stages on StagedPassManager #8936

Open
mtreinish opened this issue Oct 17, 2022 · 2 comments
Labels
type: feature request New feature or request

Comments

@mtreinish
Copy link
Member

What should we add?

Since #8548 we have a dedicated pass for high level synthesis in addition to UnitarySynthesis and the unroll family of passes to decompose higher level complex objects. Right now this is integrated into the init stage in our default stage list for the StagedPassManager. But it might make sense to create a dedicated stage for this kind of synthesis between init and layout, this would leave the init stage for any other logical analysis or transforms that we can perform prior to synthesis. This would also let downstream packages create new plugins for the entire synthesis stage. While we have the plugin interface for high level synthesis and unitary synthesis enabling packages to completely replace all the logical synthesis at once could potentially be useful too (although the synthesis_method kwarg on transpile() might be a confusing name).

This issue is to track splitting these synthesis stage out into a new stage in the default stages list in the preset pass manager.

@mtreinish mtreinish added the type: feature request New feature or request label Oct 17, 2022
@alexanderivrii
Copy link
Contributor

It could be also a good time to think how we want to implement re-synthesis in the cleanest way possible. I guess for running experiments the following is sufficient:

pm = generate_preset_pass_manager(3)
pm.optimization += CollectLinearFunctions()
pm.optimization += HighLevelSynthesis()

though since resynthesis is supposed to run after the layout/routing phase, we should extend the HighLevelSynthesis to take a coupling_map and to only apply resynthesis algorithms that support it.

@kdk
Copy link
Member

kdk commented Oct 18, 2022

High-level synthesis I could see happening at more than one point in the transpiler, but I do agree we should add a high-level optimization stage before layout.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
type: feature request New feature or request
Projects
None yet
Development

No branches or pull requests

3 participants