From 8255dd119a13c139deae1253444dbcb7f0ebbfd2 Mon Sep 17 00:00:00 2001 From: Ali Javadi Date: Tue, 2 Jan 2024 11:56:55 -0500 Subject: [PATCH 1/3] use faster aqc objective function evaluation by default --- qiskit/transpiler/synthesis/aqc/aqc_plugin.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/qiskit/transpiler/synthesis/aqc/aqc_plugin.py b/qiskit/transpiler/synthesis/aqc/aqc_plugin.py index 0fa153566557..ad8d617e42ae 100644 --- a/qiskit/transpiler/synthesis/aqc/aqc_plugin.py +++ b/qiskit/transpiler/synthesis/aqc/aqc_plugin.py @@ -109,7 +109,7 @@ def run(self, unitary, **options): from qiskit.transpiler.synthesis.aqc.aqc import AQC from qiskit.transpiler.synthesis.aqc.cnot_structures import make_cnot_network from qiskit.transpiler.synthesis.aqc.cnot_unit_circuit import CNOTUnitCircuit - from qiskit.transpiler.synthesis.aqc.cnot_unit_objective import DefaultCNOTUnitObjective + from qiskit.transpiler.synthesis.aqc.fast_gradient.fast_gradient import FastCNOTUnitObjective num_qubits = int(round(np.log2(unitary.shape[0]))) @@ -132,7 +132,7 @@ def run(self, unitary, **options): aqc = AQC(optimizer, seed) approximate_circuit = CNOTUnitCircuit(num_qubits=num_qubits, cnots=cnots) - approximating_objective = DefaultCNOTUnitObjective(num_qubits=num_qubits, cnots=cnots) + approximating_objective = FastCNOTUnitObjective(num_qubits=num_qubits, cnots=cnots) initial_point = config.get("initial_point") aqc.compile_unitary( From 72c12cbc01943be7dd18222678d4c08da3182c34 Mon Sep 17 00:00:00 2001 From: Ali Javadi Date: Tue, 2 Jan 2024 12:01:19 -0500 Subject: [PATCH 2/3] release note --- releasenotes/notes/aqc-faster-default-8d47c88fefd1b6f6.yaml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 releasenotes/notes/aqc-faster-default-8d47c88fefd1b6f6.yaml diff --git a/releasenotes/notes/aqc-faster-default-8d47c88fefd1b6f6.yaml b/releasenotes/notes/aqc-faster-default-8d47c88fefd1b6f6.yaml new file mode 100644 index 000000000000..6300a3e877eb --- /dev/null +++ b/releasenotes/notes/aqc-faster-default-8d47c88fefd1b6f6.yaml @@ -0,0 +1,5 @@ +--- +features: + - | + The AQC unitary synthesis plugin method now uses a faster objective function + evaluation by default, which results in substantial improvement in synthesis time. From 2f30cbe0cd2e9a5a12b92c43197b17525fcd2f05 Mon Sep 17 00:00:00 2001 From: Ali Javadi-Abhari Date: Wed, 3 Jan 2024 00:12:41 -0500 Subject: [PATCH 3/3] Update qiskit/transpiler/synthesis/aqc/aqc_plugin.py Co-authored-by: Jake Lishman --- qiskit/transpiler/synthesis/aqc/aqc_plugin.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/qiskit/transpiler/synthesis/aqc/aqc_plugin.py b/qiskit/transpiler/synthesis/aqc/aqc_plugin.py index ad8d617e42ae..c3e67861d016 100644 --- a/qiskit/transpiler/synthesis/aqc/aqc_plugin.py +++ b/qiskit/transpiler/synthesis/aqc/aqc_plugin.py @@ -109,7 +109,9 @@ def run(self, unitary, **options): from qiskit.transpiler.synthesis.aqc.aqc import AQC from qiskit.transpiler.synthesis.aqc.cnot_structures import make_cnot_network from qiskit.transpiler.synthesis.aqc.cnot_unit_circuit import CNOTUnitCircuit - from qiskit.transpiler.synthesis.aqc.fast_gradient.fast_gradient import FastCNOTUnitObjective + from qiskit.transpiler.synthesis.aqc.fast_gradient.fast_gradient import ( + FastCNOTUnitObjective, + ) num_qubits = int(round(np.log2(unitary.shape[0])))