202 lines
10 KiB
Plaintext
202 lines
10 KiB
Plaintext
---
|
||
title: PassManager
|
||
description: API reference for qiskit.transpiler.PassManager
|
||
in_page_toc_min_heading_level: 1
|
||
python_api_type: class
|
||
python_api_name: qiskit.transpiler.PassManager
|
||
---
|
||
|
||
# PassManager
|
||
|
||
<Class id="qiskit.transpiler.PassManager" isDedicatedPage={true} github="https://github.com/qiskit/qiskit/tree/stable/0.46/qiskit/transpiler/passmanager.py" signature="qiskit.transpiler.PassManager(passes=(), max_iteration=1000)" modifiers="class">
|
||
Bases: [`BasePassManager`](qiskit.passmanager.BasePassManager "qiskit.passmanager.passmanager.BasePassManager")
|
||
|
||
Manager for a set of Passes and their scheduling during transpilation.
|
||
|
||
Initialize an empty pass manager object.
|
||
|
||
**Parameters**
|
||
|
||
* **passes** (*Task |* [*list*](https://docs.python.org/3/library/stdtypes.html#list "(in Python v3.12)")*\[Task]*) – A pass set to be added to the pass manager schedule.
|
||
* **max\_iteration** ([*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.12)")) – The maximum number of iterations the schedule will be looped if the condition is not met.
|
||
|
||
## Methods
|
||
|
||
### append
|
||
|
||
<Function id="qiskit.transpiler.PassManager.append" signature="append(passes, max_iteration=None, **flow_controller_conditions)">
|
||
Append a Pass Set to the schedule of passes.
|
||
|
||
<Admonition title="Deprecated since version 0.45" type="danger">
|
||
Creating flow controllers with `flow_controller_conditions` keyword arguments was deprecated. Instead, you must explicitly instantiate a controller and set the controller to `passes` argument.
|
||
</Admonition>
|
||
|
||
<Admonition title="Deprecated since version 0.46" type="danger">
|
||
`qiskit.transpiler.passmanager.PassManager.append()`’s argument `max_iteration` is deprecated as of qiskit 0.46. It will be removed in the 1.0 release. ‘max\_iteration’ can be set in the constructor.
|
||
</Admonition>
|
||
|
||
**Parameters**
|
||
|
||
* **passes** (*Task |* [*list*](https://docs.python.org/3/library/stdtypes.html#list "(in Python v3.12)")*\[Task]*) – A set of passes (a pass set) to be added to schedule. A pass set is a list of passes that are controlled by the same flow controller. If a single pass is provided, the pass set will only have that pass a single element. It is also possible to append a `BaseFlowController` instance and the rest of the parameter will be ignored.
|
||
|
||
* **max\_iteration** ([*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.12)")) – max number of iterations of passes.
|
||
|
||
* **flow\_controller\_conditions** (*Any*) –
|
||
|
||
Dictionary of control flow plugins. Following built-in controllers are available by default:
|
||
|
||
* do\_while: The passes repeat until the callable returns False. Corresponds to [`DoWhileController`](qiskit.passmanager.DoWhileController "qiskit.passmanager.DoWhileController").
|
||
* condition: The passes run only if the callable returns True. Corresponds to [`ConditionalController`](qiskit.passmanager.ConditionalController "qiskit.passmanager.ConditionalController").
|
||
|
||
In general, you have more control simply by creating the controller you want and passing it to [`append()`](#qiskit.transpiler.PassManager.append "qiskit.transpiler.PassManager.append").
|
||
|
||
**Raises**
|
||
|
||
[**TranspilerError**](transpiler#qiskit.transpiler.TranspilerError "qiskit.transpiler.TranspilerError") – if a pass in passes is not a proper pass.
|
||
</Function>
|
||
|
||
### draw
|
||
|
||
<Function id="qiskit.transpiler.PassManager.draw" signature="draw(filename=None, style=None, raw=False)">
|
||
Draw the pass manager.
|
||
|
||
This function needs [pydot](https://github.com/erocarrera/pydot), which in turn needs [Graphviz](https://www.graphviz.org/) to be installed.
|
||
|
||
**Parameters**
|
||
|
||
* **filename** ([*str*](https://docs.python.org/3/library/stdtypes.html#str "(in Python v3.12)")) – file path to save image to.
|
||
* **style** ([*dict*](https://docs.python.org/3/library/stdtypes.html#dict "(in Python v3.12)")) – keys are the pass classes and the values are the colors to make them. An example can be seen in the DEFAULT\_STYLE. An ordered dict can be used to ensure a priority coloring when pass falls into multiple categories. Any values not included in the provided dict will be filled in from the default dict.
|
||
* **raw** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.12)")) – If `True`, save the raw Dot output instead of the image.
|
||
|
||
**Returns**
|
||
|
||
an in-memory representation of the pass manager, or `None` if no image was generated or [Pillow](https://pypi.org/project/Pillow/) is not installed.
|
||
|
||
**Return type**
|
||
|
||
Optional\[[PassManager](#qiskit.transpiler.PassManager "qiskit.transpiler.PassManager")]
|
||
|
||
**Raises**
|
||
|
||
[**ImportError**](https://docs.python.org/3/library/exceptions.html#ImportError "(in Python v3.12)") – when nxpd or pydot not installed.
|
||
</Function>
|
||
|
||
### passes
|
||
|
||
<Function id="qiskit.transpiler.PassManager.passes" signature="passes()">
|
||
Return a list structure of the appended passes and its options.
|
||
|
||
<Admonition title="Deprecated since version 0.46" type="danger">
|
||
The method `qiskit.transpiler.passmanager.PassManager.passes()` is deprecated as of qiskit 0.46. It will be removed in the 1.0 release. Use .to\_flow\_controller().tasks instead. This returns a sequence of linearized base task instances in tuple format.
|
||
</Admonition>
|
||
|
||
**Returns**
|
||
|
||
A list of pass sets, as defined in `append()`.
|
||
|
||
**Return type**
|
||
|
||
[list](https://docs.python.org/3/library/stdtypes.html#list "(in Python v3.12)")\[[dict](https://docs.python.org/3/library/stdtypes.html#dict "(in Python v3.12)")\[[str](https://docs.python.org/3/library/stdtypes.html#str "(in Python v3.12)"), qiskit.transpiler.basepasses.BasePass]]
|
||
</Function>
|
||
|
||
### remove
|
||
|
||
<Function id="qiskit.transpiler.PassManager.remove" signature="remove(index)">
|
||
Removes a particular pass in the scheduler.
|
||
|
||
**Parameters**
|
||
|
||
**index** ([*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.12)")) – Pass index to remove, based on the position in [`passes()`](transpiler_passes#module-qiskit.transpiler.passes "qiskit.transpiler.passes").
|
||
|
||
**Raises**
|
||
|
||
[**PassManagerError**](passmanager#qiskit.passmanager.PassManagerError "qiskit.passmanager.PassManagerError") – If the index is not found.
|
||
</Function>
|
||
|
||
### replace
|
||
|
||
<Function id="qiskit.transpiler.PassManager.replace" signature="replace(index, passes, max_iteration=None, **flow_controller_conditions)">
|
||
Replace a particular pass in the scheduler.
|
||
|
||
<Admonition title="Deprecated since version 0.45" type="danger">
|
||
Creating flow controllers with `flow_controller_conditions` keyword arguments was deprecated. Instead, you must explicitly instantiate a controller and set the controller to `passes` argument.
|
||
</Admonition>
|
||
|
||
<Admonition title="Deprecated since version 0.46" type="danger">
|
||
`qiskit.transpiler.passmanager.PassManager.replace()`’s argument `max_iteration` is deprecated as of qiskit 0.46. It will be removed in the 1.0 release. ‘max\_iteration’ can be set in the constructor.
|
||
</Admonition>
|
||
|
||
**Parameters**
|
||
|
||
* **index** ([*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.12)")) – Pass index to replace, based on the position in passes().
|
||
* **passes** (*Task |* [*list*](https://docs.python.org/3/library/stdtypes.html#list "(in Python v3.12)")*\[Task]*) – A pass set to be added to the pass manager schedule.
|
||
* **max\_iteration** ([*int*](https://docs.python.org/3/library/functions.html#int "(in Python v3.12)")) – max number of iterations of passes.
|
||
* **flow\_controller\_conditions** (*Any*) – Dictionary of control flow plugins. See [`qiskit.transpiler.PassManager.append()`](#qiskit.transpiler.PassManager.append "qiskit.transpiler.PassManager.append") for details.
|
||
</Function>
|
||
|
||
### run
|
||
|
||
<Function id="qiskit.transpiler.PassManager.run" signature="run(circuits, output_name=None, callback=None)">
|
||
Run all the passes on the specified `circuits`.
|
||
|
||
**Parameters**
|
||
|
||
* **circuits** (*\_CircuitsT*) – Circuit(s) to transform via all the registered passes.
|
||
|
||
* **output\_name** ([*str*](https://docs.python.org/3/library/stdtypes.html#str "(in Python v3.12)") *| None*) – The output circuit name. If `None`, it will be set to the same as the input circuit name.
|
||
|
||
* **callback** (*Callable*) –
|
||
|
||
A callback function that will be called after each pass execution. The function will be called with 5 keyword arguments:
|
||
|
||
```python
|
||
pass_ (Pass): the pass being run
|
||
dag (DAGCircuit): the dag output of the pass
|
||
time (float): the time to execute the pass
|
||
property_set (PropertySet): the property set
|
||
count (int): the index for the pass execution
|
||
```
|
||
|
||
<Admonition title="Note" type="note">
|
||
Beware that the keyword arguments here are different to those used by the generic [`BasePassManager`](qiskit.passmanager.BasePassManager "qiskit.passmanager.BasePassManager"). This pass manager will translate those arguments into the form described above.
|
||
</Admonition>
|
||
|
||
The exact arguments pass expose the internals of the pass manager and are subject to change as the pass manager internals change. If you intend to reuse a callback function over multiple releases be sure to check that the arguments being passed are the same.
|
||
|
||
To use the callback feature you define a function that will take in kwargs dict and access the variables. For example:
|
||
|
||
```python
|
||
def callback_func(**kwargs):
|
||
pass_ = kwargs['pass_']
|
||
dag = kwargs['dag']
|
||
time = kwargs['time']
|
||
property_set = kwargs['property_set']
|
||
count = kwargs['count']
|
||
...
|
||
```
|
||
|
||
**Returns**
|
||
|
||
The transformed circuit(s).
|
||
|
||
**Return type**
|
||
|
||
\_CircuitsT
|
||
</Function>
|
||
|
||
### to\_flow\_controller
|
||
|
||
<Function id="qiskit.transpiler.PassManager.to_flow_controller" signature="to_flow_controller()">
|
||
Linearize this manager into a single [`FlowControllerLinear`](qiskit.passmanager.FlowControllerLinear "qiskit.passmanager.FlowControllerLinear"), so that it can be nested inside another pass manager.
|
||
|
||
**Returns**
|
||
|
||
A linearized pass manager.
|
||
|
||
**Return type**
|
||
|
||
*RunningPassManager*
|
||
</Function>
|
||
</Class>
|
||
|