-
Notifications
You must be signed in to change notification settings - Fork 2.6k
Description
What should we add?
As part of our ongoing effort to migrate more of the rust code for better runtime performance and efficiency we are looking to migrate all the transpiler passes in the preset pass managers to be written in rust. We will still primarily use the python interface for passes as this is a critical part of the transpiler, but the default passes we use should execute solely in rust space and the python portion should just control the dispatch of the rust function.
This is blocked on #11721 and in many cases on #12205 too
The current list of passes involved for this are tracked here:
Tasks
- Port
UnitarySynthesis
to Rust #12210 - Port
HighLevelSynthesis
to rust #12211 - Port
BasisTranslator
to Rust #12246 - Port
Collect2qBlocks
to Rust #12248 - Port
Collect1qRuns
to Rust #12249 - Port
ConsolidateBlocks
to Rust #12250 - Port
CheckMap
to Rust #12251 - Port
BarrierBeforeFinalMeasurements
to Rust #12253 - Port
GateDirection
to Rust #12252 - Port
OptimizeSwapBeforeMeasure
to Rust #12254 - Port
RemoveDiagonalGatesBeforeMeasure
to Rust #12255 - Port
ElidePermutations
to Rust #12336 - Port
StarPrerouting
to Rust #12337 - Port
CheckGateDirection
to Rust #12256 - Port
TimeUnitConversion
to Rust #12257 - Port
ALAPScheduleAnalysis
to Rust #12258 - Port
ASAPScheduleAnalysis
to Rust #12259 - Port
FullAncillaAllocation
to Rust #12260 - Port
EnlargeWithAncilla
to Rust #12261 - Port
ApplyLayout
to Rust #12262 - Port
FilterOpNodes
to Rust #12263 - Port
ValidatePulseGates
to Rust #12264 - Port
PulseGates
to Rust #12265 - Port
PadDelay
to Rust #12266 - Port
InstructionDurationCheck
to Rust #12267 - Port
ConstrainedReschedule
to Rust #12268 - Port
ContainsInstruction
to Rust #12269 - Port
CommutativeCancellation
to Rust #12270 - Port
InverseCancellation
to Rust #12271 - Port
Depth
to Rust #12272 - Port
Size
to Rust #12273 - Port
FixedPoint
to Rust #12274 - Port
MinimumPoint
to Rust (may not be not needed) - Port
GatesInBasis
to Rust #12275 - Port the rest of
SabreSwap
to Rust #12280 - Port the rest of
SabreLayout
to Rust #12279 - Port
VF2Layout
to Rust #12277 - Port
VF2PostLayout
to Rust #12276 - Port
Unroll3qOrMore
to Rust #12247 - Port
PadDynamicalDecoupling
to Rust #14620
I included passes that are primarily written in rust because there is still some python side interaction because we don't have #12205 and #11721 yet. (this is current as of 04-18-2024, we should update this if we make changes to the preset pass managers)