-
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
Deprecate lists for argument input on transpile() #8835
Conversation
Right now the support for the argument broadcasting with list inputs for various transpiler options on the transpile() function causes a significant performance overhead to support, primarily do to how we have to handle the multiple arguments across a parallel dispatch boundary. It also significantly increases the code complexity of the function to support more than one input for each argument (except circuits). The utility of doing this type of argument handling is quite limited since a similar result can be achieved with a for loop and would like be simpler for users to reason about. When weighing all these factors the best path forward is to just remove this functionality. This commit starts the process of removing this feature by marking it as deprecated. Once the deprecation cycle is complete we can greatly simplify the code in transpile and primarily replace it with a call to generate_preset_pass_manager() and passmanager.run() (the only thing I think we'll have to handle out of band is faulty qubits defined in a BackendProperties for BackendV1). Related to Qiskit#7741
Thank you for opening a new pull request. Before your PR can be merged it will first need to pass continuous integration tests and be reviewed. Sometimes the review process can be slow, so please be patient. While you're waiting, please feel free to review other open PRs. While only a subset of people are authorized to approve pull requests for merging, everyone is encouraged to review open pull requests. Doing reviews helps reduce the burden on the core team and helps make the project's code better for everyone. One or more of the the following people are requested to review this:
|
Pull Request Test Coverage Report for Build 3267941290
💛 - Coveralls |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM, other than a few documentation-related requests.
Co-authored-by: Kevin Hartman <[email protected]>
Co-authored-by: Kevin Hartman <[email protected]>
* Deprecate lists for argument input on transpile() Right now the support for the argument broadcasting with list inputs for various transpiler options on the transpile() function causes a significant performance overhead to support, primarily do to how we have to handle the multiple arguments across a parallel dispatch boundary. It also significantly increases the code complexity of the function to support more than one input for each argument (except circuits). The utility of doing this type of argument handling is quite limited since a similar result can be achieved with a for loop and would like be simpler for users to reason about. When weighing all these factors the best path forward is to just remove this functionality. This commit starts the process of removing this feature by marking it as deprecated. Once the deprecation cycle is complete we can greatly simplify the code in transpile and primarily replace it with a call to generate_preset_pass_manager() and passmanager.run() (the only thing I think we'll have to handle out of band is faulty qubits defined in a BackendProperties for BackendV1). Related to Qiskit#7741 * Update qiskit/compiler/transpiler.py Co-authored-by: Kevin Hartman <[email protected]> * Update qiskit/compiler/transpiler.py Co-authored-by: Kevin Hartman <[email protected]> * Fix release note typo Co-authored-by: Kevin Hartman <[email protected]> Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Summary
Right now the support for the argument broadcasting with list inputs for various transpiler options on the transpile() function causes a significant performance overhead to support, primarily do to how we have to handle the multiple arguments across a parallel dispatch boundary. It also significantly increases the code complexity of the function to support more than one input for each argument (except circuits). The utility of doing this type of argument handling is quite limited since a similar result can be achieved with a for loop and would like be simpler for users to reason about. When weighing all these factors the best path forward is to just remove this functionality. This commit starts the process of removing this feature by marking it as deprecated. Once the deprecation cycle is complete we can greatly simplify the code in transpile and primarily replace it with a call to
generate_preset_pass_manager() and passmanager.run() (the only thing I think we'll have to handle out of band is faulty qubits defined in a BackendProperties for BackendV1).
Related to #7741
Details and comments