1. Compilation/
  2. Loop Boundary Optimization

Loop Boundary Optimization

Loop boundary optimization is a technique that extends pattern-based optimization to work across loop boundaries. Catalyst's cancel_inverses and merge_rotations transforms are examples of passes that take advantage of loop boundary optimization in structured programs.

Inputs

  • High-level program description (with loop structures)

Outputs

  • High-level program description (with loop structures)

Example

Consider the following simple quantum program.

def q_program1(angles): for i in range(3): qml.Hadamard(0) qml.T(0) qml.Hadamard(0)

This program can be optimized with a "cancel inverses" pass, recognizing that the Hadamards are adjacent to each other across the loop boundary. We can therefore remove both gates, with a small correction added outside the loop to account for the "single" Hadamards at the beginning of the first iteration and the end of the last iteration.

def q_program1_optimized(): qml.Hadamard(0) for i in range(3): qml.T(0) qml.Hadamard(0)

Typical usage

This technique can be incorporated into other pattern-based quantum optimizations whenever there is a loop structure in a quantum program. Catalyst's cancel_inverses and merge_rotations transforms are examples of passes that take advantage of loop boundary optimization in structured programs.

References

[1] "Enabling Dataflow Optimization for Quantum Programs", David Ittah, Thomas Häner, Vadym Kliuchnikov, Torsten Hoefler, arXiv:2101.11030, 2021


Cite this page

@misc{PennyLane-loop-boundary,
  title={Loop Boundary Optimization},
  howpublished={\url{https://pennylane.ai/compilation/loop-boundary-optimization}},
  year={2025}
}

Page author(s)

Korbinian Kottmann

Korbinian Kottmann

Quantum simulation & open source software