Source code for qlauncher.routines.qiskit.backends.aer_backend

 1"""qiskit_aer implementation of QiskitBackend"""
 2from typing import Literal
 3
 4from qiskit.providers import BackendV1, BackendV2
 5from qiskit.primitives import BackendSamplerV2, BackendEstimatorV2
 6from qiskit_ibm_runtime import Options
 7from qiskit_aer import AerSimulator
 8from qiskit_aer.noise import NoiseModel
 9
10from qlauncher.routines.qiskit.backends.qiskit_backend import QiskitBackend
11
12
[docs] 13class AerBackend(QiskitBackend): 14 """ 15 QiskitBackend utilizing the qiskit_aer library. Runs local simulations only, utilizing CUDA capable gpus if available. 16 """ 17 18 def __init__( 19 self, 20 name: Literal['local_simulator', 'backendv1v2'], 21 options: Options | None = None, 22 backendv1v2: BackendV1 | BackendV2 | None = None, 23 auto_transpile_level: Literal[0, 1, 2, 3] | None = None, 24 simulation_method: str = 'automatic', 25 simulation_device: Literal['CPU', 'GPU'] = 'CPU', 26 ) -> None: 27 self.method = simulation_method 28 self.device = simulation_device 29 super().__init__(name, options, backendv1v2, auto_transpile_level) 30 31 def _set_primitives_on_backend_name(self): 32 if self.name == 'local_simulator': 33 self.simulator = AerSimulator(method=self.method, device=self.device) 34 elif self.name == 'backendv1v2': 35 if self.backendv1v2 is None: 36 raise AttributeError( 37 'Please indicate a backend when in backendv1v2 mode.') 38 noise_model = NoiseModel.from_backend(self.backendv1v2) 39 self.simulator = AerSimulator(method=self.method, device=self.device, noise_model=noise_model) 40 else: 41 raise ValueError( 42 f"Unsupported mode for this backend:'{self.name}'. Please use one of the following: ['local_simulator', 'backendv1v2']") 43 44 self.sampler = BackendSamplerV2(backend=self.simulator) 45 self.estimator = BackendEstimatorV2(backend=self.simulator) 46 47 self._configure_auto_behavior() 48
[docs] 49 def set_options(self, **fields): 50 """Set additional options for the instance AerSimulator""" 51 self.simulator.set_options(**fields)