PennyLaneAI / PennyLaneAI/catalyst

Integrate transform dialect scheduling into quantum module abstraction

Open
#1,185 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

compiler
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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.