CliffordRzOptimization
QuICT.qcda.optimization.clifford_rz_optimization.CliffordRzOptimization ¶
Bases: object
Heuristic optimization of circuits in Clifford + Rz.
References
[1] Automated optimization of large quantum circuits with continuous parameters
https://arxiv.org/abs/1710.07345
Examples:
>>> from QuICT.qcda.optimization import CliffordRzOptimization
>>> CRO = CliffordRzOptimization()
>>> circ_opt = CRO.execute(circuit)
Parameters:
-
level(str, default:'light') –Support 'light' and 'heavy' level. See details in [1]
-
optimize_toffoli(bool, default:True) –whether to decompose and optimize ccx/ccz gates into Clifford+rz
-
keep_phase(bool, default:False) –whether to keep the global phase as a GPhase gate in the output
-
verbose(bool, default:False) –whether to output details of each step
Source code in QuICT/qcda/optimization/clifford_rz_optimization/clifford_rz_optimization.py
ReachableSet ¶
Data structure that manages the reachable relations in a DAG.
For a DAG of over 10000 nodes, storing reachable relations between all nodes consumes excessive memories. ReachableSet will automatically manage and store recently used relations.
Parameters:
-
succ_node(List[Tuple[Node, int]], default:None) –right boundary
-
max_size(int, default:1000000) –max number of entries stored in this set.
Source code in QuICT/qcda/optimization/clifford_rz_optimization/clifford_rz_optimization.py
query ¶
Ask whether (node, qubit_) can reach the node other.
Parameters:
Returns:
-
bool(bool) –whether reachable
Source code in QuICT/qcda/optimization/clifford_rz_optimization/clifford_rz_optimization.py
assign_symbolic_phases ¶
Assign polarity to undetermined T gates in the circuit. Do it greedily to reduce gate count.
Parameters:
-
gates(DAG) –DAG of the circuit
Returns:
-
int(int) –Number of gates reduced.
Source code in QuICT/qcda/optimization/clifford_rz_optimization/clifford_rz_optimization.py
cancel_single_qubit_gates ¶
Merge Rz gates in Clifford+Rz circuit.
Parameters:
-
gates(DAG)–DAG of the circuit
Returns:
-
int(int) –Number of gates reduced.
Source code in QuICT/qcda/optimization/clifford_rz_optimization/clifford_rz_optimization.py
cancel_two_qubit_gates ¶
Merge CX gate in Clifford+Rz circuit.
Parameters:
-
gates(DAG) –DAG of the circuit
Returns:
-
int(int) –Number of gates reduced.
Source code in QuICT/qcda/optimization/clifford_rz_optimization/clifford_rz_optimization.py
deparameterize_all ¶
Convert all applicable T/Tdg/S/Sdg/Z into Rz in the circuit.
Parameters:
-
gates(DAG) –DAG of the circuit
Source code in QuICT/qcda/optimization/clifford_rz_optimization/clifford_rz_optimization.py
execute ¶
Parameters:
-
gates(Circuit) –Circuit to be optimized
Returns:
-
Circuit(Circuit) –The circuit after optimization
Source code in QuICT/qcda/optimization/clifford_rz_optimization/clifford_rz_optimization.py
float_cancel_two_qubit_gates ¶
Merge CX gates in the circuit while considering float positions of Rz gates.
Parameters:
-
gates(DAG) –DAG of the circuit
Returns:
-
int–Number of gates reduced.
Source code in QuICT/qcda/optimization/clifford_rz_optimization/clifford_rz_optimization.py
float_rotations ¶
Reduce gate count by considering float positions of Rz gates.
Parameters:
-
gates(DAG) –DAG of the circuit
Returns:
-
int–Number of gates reduced.
Source code in QuICT/qcda/optimization/clifford_rz_optimization/clifford_rz_optimization.py
gate_preserving_rewrite ¶
Reduce gate count by gate preserving rewrite rules.
Parameters:
-
gates(DAG) –DAG of the circuit
Returns: int: Number of gates reduced.
Source code in QuICT/qcda/optimization/clifford_rz_optimization/clifford_rz_optimization.py
gate_reducing_rewrite ¶
Reduce gate count by gate reducing rewrite rules.
Parameters:
-
gates(DAG) –DAG of the circuit
Returns:
-
int–Number of gates reduced.
Source code in QuICT/qcda/optimization/clifford_rz_optimization/clifford_rz_optimization.py
merge_rotations ¶
Merge Rz gates using phase polynomials.
Parameters:
-
gates(DAG) –DAG of the circuit
Returns:
-
int–Number of gates reduced.
Source code in QuICT/qcda/optimization/clifford_rz_optimization/clifford_rz_optimization.py
parameterize_all ¶
Convert all applicable Rz gates into T/Tdg/S/Sdg/Z in the circuit.
Parameters:
-
gates(DAG) –DAG of the circuit
Source code in QuICT/qcda/optimization/clifford_rz_optimization/clifford_rz_optimization.py
reduce_hadamard_gates ¶
Reduce hadamard gates in Clifford+Rz circuits by template matching. Adjacent X gates will also be cancelled out.
Parameters:
-
gates(DAG) –DAG of the circuit
Returns:
-
int(int) –Number of H gates reduced.
Source code in QuICT/qcda/optimization/clifford_rz_optimization/clifford_rz_optimization.py
try_float_cancel_two_qubit_gates ¶
Test whether float_cancel_two_qubit_gates can reduce gate count in the current circuit.
Parameters:
-
gates(DAG) –DAG of the circuit
Returns:
-
bool–whether float_cancel_two_qubit_gates can reduce gate count