Skip to content

Commit

Permalink
Keep resets at beginning of circuits
Browse files Browse the repository at this point in the history
  • Loading branch information
nonhermitian committed Aug 8, 2023
1 parent 06416d7 commit d29577e
Show file tree
Hide file tree
Showing 4 changed files with 10 additions and 9 deletions.
4 changes: 2 additions & 2 deletions qiskit/transpiler/preset_passmanagers/level1.py
Original file line number Diff line number Diff line change
Expand Up @@ -232,10 +232,10 @@ def _swap_mapped(property_set):
target is not None and target.get_non_global_operation_names(strict_direction=True)
):
pre_optimization = common.generate_pre_op_passmanager(
target, coupling_map, remove_reset_in_zero=True
target, coupling_map, remove_reset_in_zero=False
)
else:
pre_optimization = common.generate_pre_op_passmanager(remove_reset_in_zero=True)
pre_optimization = common.generate_pre_op_passmanager(remove_reset_in_zero=False)
if optimization_method is None:
optimization = PassManager()
unroll = [pass_ for x in translation.passes() for pass_ in x["passes"]]
Expand Down
4 changes: 2 additions & 2 deletions qiskit/transpiler/preset_passmanagers/level2.py
Original file line number Diff line number Diff line change
Expand Up @@ -220,9 +220,9 @@ def _swap_mapped(property_set):
if (coupling_map and not coupling_map.is_symmetric) or (
target is not None and target.get_non_global_operation_names(strict_direction=True)
):
pre_optimization = common.generate_pre_op_passmanager(target, coupling_map, True)
pre_optimization = common.generate_pre_op_passmanager(target, coupling_map, False)
else:
pre_optimization = common.generate_pre_op_passmanager(remove_reset_in_zero=True)
pre_optimization = common.generate_pre_op_passmanager(remove_reset_in_zero=False)
if optimization_method is None:
optimization = PassManager()
unroll = [pass_ for x in translation.passes() for pass_ in x["passes"]]
Expand Down
4 changes: 2 additions & 2 deletions qiskit/transpiler/preset_passmanagers/level3.py
Original file line number Diff line number Diff line change
Expand Up @@ -272,7 +272,7 @@ def _unroll_condition(property_set):
if (coupling_map and not coupling_map.is_symmetric) or (
target is not None and target.get_non_global_operation_names(strict_direction=True)
):
pre_optimization = common.generate_pre_op_passmanager(target, coupling_map, True)
pre_optimization = common.generate_pre_op_passmanager(target, coupling_map, False)
_direction = [
pass_
for x in common.generate_pre_op_passmanager(target, coupling_map).passes()
Expand All @@ -284,7 +284,7 @@ def _unroll_condition(property_set):
do_while=_opt_control,
)
else:
pre_optimization = common.generate_pre_op_passmanager(remove_reset_in_zero=True)
pre_optimization = common.generate_pre_op_passmanager(remove_reset_in_zero=False)
optimization.append(
_opt + _unroll_if_out_of_basis + _minimum_point_check, do_while=_opt_control
)
Expand Down
7 changes: 4 additions & 3 deletions test/python/compiler/test_transpiler.py
Original file line number Diff line number Diff line change
Expand Up @@ -802,14 +802,15 @@ def test_move_measurements(self):
)
self.assertTrue(is_last_measure)

def test_initialize_reset_should_be_removed(self):
"""The reset in front of initializer should be removed when zero state"""
def test_initialize_reset_is_not_removed(self):
"""The reset in front of initializer should NOT be removed at beginning"""
qr = QuantumRegister(1, "qr")
qc = QuantumCircuit(qr)
qc.initialize([1.0 / math.sqrt(2), 1.0 / math.sqrt(2)], [qr[0]])
qc.initialize([1.0 / math.sqrt(2), -1.0 / math.sqrt(2)], [qr[0]])

expected = QuantumCircuit(qr)
expected.reset(qr[0])
expected.append(U3Gate(np.pi / 2, 0, 0), [qr[0]])
expected.reset(qr[0])
expected.append(U3Gate(np.pi / 2, -np.pi, 0), [qr[0]])
Expand All @@ -828,7 +829,7 @@ def test_initialize_FakeMelbourne(self):
out_dag = circuit_to_dag(out)
reset_nodes = out_dag.named_nodes("reset")

self.assertEqual(reset_nodes, [])
self.assertEqual(len(reset_nodes), 3)

def test_non_standard_basis(self):
"""Test a transpilation with a non-standard basis"""
Expand Down

0 comments on commit d29577e

Please sign in to comment.