Proof of concept constants are not hoisted. #1737
Draft
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Context: This is just a proof of concept, additional work is needed. What is this PR addressing? For this simple piece of code:
The MLIR produced always has the constant in the host program and not on the device program. I.e.,
I wondered how to get the constant inside the qnode. If we use
jax.jit
it is possible. However, there are other errors that stem from this decision, in particular dynamic shapes.Other kind of errors also emerged, like:
As a way around this, I did outlining followed by inlining followed by outlining.
This is just a proof of concept intended more for discussion than for merging. It would be nice to have these constants inside the quantum function in MLIR to allow transformations to be easier.
With this proposal: