PennyLaneAI / PennyLaneAI/catalyst
Integrate transform dialect scheduling into quantum module abstraction
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 234
- Forks
- 84
- Avg merge
- 2d 15h
- Merged PRs (30d)
- 66
Description
#1144 puts each qnode into its own module. We can integrate the transform dialect into this abstraction by letting each qnode module carry its own transform_named_sequence, instead of having one overall sequence look for target qnode functions by function name.
In addition, there are some passes intended to be run on qnodes (e.g. --split-multiple-tapes) that early exit if the visited function does not carry a qnode unit attribute . This happens to still work because the qnode attribute for quantum functions is not removed, but we should think about using the new abstraction for the purpose of an isQuantumFunction() method.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reading the module abstraction introduced in #1144 and the qnode handling around mlir/lib/Quantum/Transforms/SplitMultipleTapes.cpp:267. Trace how transform_named_sequence is currently represented and how quantum-function checks work; done means each qnode module carries its sequence and relevant passes use the new isQuantumFunction() abstraction.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- compilers
- Issue type
- Refactor
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 25/100