From b4db37e12b0e8c7e24ccff7b08a91b69f08a3b67 Mon Sep 17 00:00:00 2001 From: Jim Garrison Date: Wed, 17 Jul 2024 15:44:18 -0400 Subject: [PATCH] Use Aer's SamplerV2 instead of SamplerV1 (#643) * Use Aer's SamplerV2 instead of SamplerV1 Addresses part of #506 * `qiskit_aer.primitives.SamplerV2` does not support mid-circuit measurements so we use runtime `SamplerV2` with `AerSimulator` as the backend instead --- test/cutting/test_cutting_roundtrip.py | 5 ++++- test/cutting/test_cutting_workflows.py | 7 +++---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/test/cutting/test_cutting_roundtrip.py b/test/cutting/test_cutting_roundtrip.py index 6ea7547cb..d1f5b638d 100644 --- a/test/cutting/test_cutting_roundtrip.py +++ b/test/cutting/test_cutting_roundtrip.py @@ -42,6 +42,8 @@ ) from qiskit.quantum_info import PauliList, random_unitary from qiskit.primitives import Estimator +from qiskit_ibm_runtime import SamplerV2 +from qiskit_aer import AerSimulator from qiskit_aer.primitives import Sampler from circuit_knitting.utils.simulation import ExactSampler @@ -172,7 +174,8 @@ def test_cutting_exact_reconstruction(example_circuit): @pytest.mark.parametrize( - "sampler,is_exact_sampler", [(Sampler(), False), (ExactSampler(), True)] + "sampler,is_exact_sampler", + [(Sampler(), False), (SamplerV2(AerSimulator()), False), (ExactSampler(), True)], ) def test_sampler_with_identity_subobservable(sampler, is_exact_sampler): """This test ensures that the sampler works for a subcircuit with no observable measurements. diff --git a/test/cutting/test_cutting_workflows.py b/test/cutting/test_cutting_workflows.py index c34d14015..406d92816 100644 --- a/test/cutting/test_cutting_workflows.py +++ b/test/cutting/test_cutting_workflows.py @@ -21,7 +21,6 @@ from qiskit.transpiler.preset_passmanagers import generate_preset_pass_manager from qiskit.providers.fake_provider import GenericBackendV2 from qiskit_ibm_runtime import SamplerV2 -from qiskit_aer.primitives import Sampler from qiskit_aer import AerSimulator from circuit_knitting.cutting.qpd.instructions import SingleQubitQPDGate @@ -89,11 +88,11 @@ def test_exotic_labels(label1, label2): assert subexperiments.keys() == subcircuits.keys() samplers = { - label1: Sampler(run_options={"shots": 10}), - label2: Sampler(run_options={"shots": 10}), + label1: SamplerV2(AerSimulator()), + label2: SamplerV2(AerSimulator()), } results = { - label: sampler.run(subexperiments[label]).result() + label: sampler.run(subexperiments[label], shots=10).result() for label, sampler in samplers.items() }