12
12
13
13
Not all combinations of :class:`AvailableDevice` and
14
14
:class:`JobType<mpqp.execution.job.JobType>` are possible, for each device
15
- listed bellow, ``S`` means if supports the ``SAMPLE`` job type, ``SV`` the
16
- ``STATE_VECTOR`` one and ``O`` the ``OBSERVABLE`` one.
15
+ listed bellow, ``S`` means it supports the ``SAMPLE`` job type, ``SV`` the
16
+ ``STATE_VECTOR`` one and ``O`` the ``OBSERVABLE`` one. A variation of the
17
+ ``OBSERVABLE`` job type is the ideal case (when ``shots=0``), this one is denoted
18
+ ``Oi``.
17
19
"""
18
20
19
21
from abc import abstractmethod
@@ -52,55 +54,84 @@ def is_simulator(self) -> bool:
52
54
53
55
54
56
class IBMDevice (AvailableDevice ):
55
- """Enum regrouping all available devices provided by IBM Quantum."""
57
+ """Enum regrouping all available devices provided by IBM Quantum.
56
58
57
- PULSE_SIMULATOR = "pulse_simulator"
59
+ Warning:
60
+ Since previous version, many devices were disabled by IBM. This may
61
+ affect your code. We are currently investigating the issue to check if a
62
+ workaround is possible for some of them (like replacing a simulator by
63
+ an equivalent one for instance).
64
+ """
65
+
66
+ # PULSE_SIMULATOR = "pulse_simulator"
58
67
59
68
AER_SIMULATOR = "aer_simulator"
60
- """``S``"""
69
+ """``S`` ``O`` ``Oi`` """
61
70
AER_SIMULATOR_STATEVECTOR = "aer_simulator_statevector"
62
- """``SV``"""
63
- AER_SIMULATOR_DENSITY_MATRIX = "aer_simulator_density_matrix"
64
- AER_SIMULATOR_STABILIZER = "aer_simulator_stabilizer"
65
- AER_SIMULATOR_MATRIX_PRODUCT_STATE = "aer_simulator_matrix_product_state"
66
- AER_SIMULATOR_EXTENDED_STABILIZER = "aer_simulator_extended_stabilizer"
67
- AER_SIMULATOR_UNITARY = "aer_simulator_unitary"
68
- AER_SIMULATOR_SUPEROP = "aer_simulator_superop"
69
-
70
- IBMQ_SIMULATOR_STATEVECTOR = "simulator_statevector"
71
- IBMQ_SIMULATOR_STABILIZER = "simulator_stabilizer"
72
- IBMQ_SIMULATOR_EXTENDED_STABILIZER = "simulator_extended_stabilizer"
73
- IBMQ_SIMULATOR_MPS = "simulator_mps"
74
- IBMQ_QASM_SIMULATOR = "ibmq_qasm_simulator"
71
+ """``SV`` ``O``"""
72
+ # TODO: many devices are no longer working, explore why
73
+ # AER_SIMULATOR_DENSITY_MATRIX = "aer_simulator_density_matrix"
74
+ # AER_SIMULATOR_STABILIZER = "aer_simulator_stabilizer"
75
+ # AER_SIMULATOR_MATRIX_PRODUCT_STATE = "aer_simulator_matrix_product_state"
76
+ # AER_SIMULATOR_EXTENDED_STABILIZER = "aer_simulator_extended_stabilizer"
77
+ # AER_SIMULATOR_UNITARY = "aer_simulator_unitary"
78
+ # AER_SIMULATOR_SUPEROP = "aer_simulator_superop"
79
+
80
+ # IBMQ_SIMULATOR_STATEVECTOR = "simulator_statevector"
81
+ # IBMQ_SIMULATOR_STABILIZER = "simulator_stabilizer"
82
+ # IBMQ_SIMULATOR_EXTENDED_STABILIZER = "simulator_extended_stabilizer"
83
+ # IBMQ_SIMULATOR_MPS = "simulator_mps"
84
+ # IBMQ_QASM_SIMULATOR = "ibmq_qasm_simulator"
75
85
76
86
IBM_BRISBANE = "ibm_brisbane"
87
+ """``S`` ``O``"""
77
88
IBM_OSAKA = "ibm_osaka"
89
+ """``S`` ``O``"""
78
90
IBM_KYOTO = "ibm_kyoto"
91
+ """``S`` ``O``"""
79
92
80
93
IBM_SHERBROOKE = "ibm_sherbrooke"
94
+ """``S`` ``O``"""
81
95
IBM_KYIV = "ibm_kyiv"
96
+ """``S`` ``O``"""
82
97
IBM_NAZCA = "ibm_nazca"
98
+ """``S`` ``O``"""
83
99
IBM_CUSCO = "ibm_cusco"
100
+ """``S`` ``O``"""
84
101
IBM_ITHACA = "ibm_ithaca"
102
+ """``S`` ``O``"""
85
103
IBM_TORINO = "ibm_torino"
104
+ """``S`` ``O``"""
86
105
IBM_QUEBEC = "ibm_quebec"
106
+ """``S`` ``O``"""
87
107
IBM_KAWASAKI = "ibm_kawasaki"
108
+ """``S`` ``O``"""
88
109
IBM_CLEVELAND = "ibm_cleveland"
110
+ """``S`` ``O``"""
89
111
IBM_CAIRO = "ibm_cairo"
112
+ """``S`` ``O``"""
90
113
IBM_HANOI = "ibm_hanoi"
114
+ """``S`` ``O``"""
91
115
IBM_ALGIERS = "ibm_algiers"
116
+ """``S`` ``O``"""
92
117
IBM_KOLKATA = "ibm_kolkata"
118
+ """``S`` ``O``"""
93
119
IBM_MUMBAI = "ibm_mumbai"
120
+ """``S`` ``O``"""
94
121
IBM_PEEKSKILL = "ibm_peekskill"
122
+ """``S`` ``O``"""
95
123
96
124
IBM_RANDOM_SMALL_DEVICE = "ibm_small_device"
125
+ """``S`` ``O``"""
97
126
IBM_SMALL_DEVICES_LEAST_BUSY = "ibm_least_busy"
127
+ """``S`` ``O``"""
98
128
99
129
def is_remote (self ) -> bool :
100
130
return self .name .startswith ("IBM" )
101
131
102
132
def is_gate_based (self ) -> bool :
103
- return self != IBMDevice .PULSE_SIMULATOR
133
+ return True
134
+ # return self != IBMDevice.PULSE_SIMULATOR
104
135
105
136
def is_simulator (self ) -> bool :
106
137
return "simulator" in self .value
@@ -110,16 +141,22 @@ class ATOSDevice(AvailableDevice):
110
141
"""Enum regrouping all available devices provided by ATOS."""
111
142
112
143
MYQLM_PYLINALG = auto ()
144
+ """``S`` ``SV`` ``O`` ``Oi``"""
113
145
MYQLM_CLINALG = auto ()
146
+ """``S`` ``SV`` ``O`` ``Oi``"""
114
147
115
148
QLM_LINALG = auto ()
149
+ """``S`` ``SV`` ``O`` ``Oi``"""
116
150
QLM_MPS = auto ()
151
+ """``S`` ``SV`` ``Oi``"""
117
152
QLM_MPS_LEGACY = auto ()
118
153
QLM_MPO = auto ()
154
+ """``S`` ``Oi``"""
119
155
QLM_STABS = auto ()
120
156
QLM_FEYNMAN = auto ()
121
157
QLM_BDD = auto ()
122
158
QLM_NOISY_QPROC = auto ()
159
+ """``S`` ``O`` ``Oi``"""
123
160
QLM_SQA = auto ()
124
161
QLM_QPEG = auto ()
125
162
QLM_CLASSICAL_QPU = auto ()
@@ -138,18 +175,27 @@ class AWSDevice(AvailableDevice):
138
175
"""Enum regrouping all available devices provided by AWS Braket."""
139
176
140
177
BRAKET_LOCAL_SIMULATOR = "LocalSimulator"
178
+ """``S`` ``SV`` ``O`` ``Oi``"""
141
179
142
180
BRAKET_SV1_SIMULATOR = "quantum-simulator/amazon/sv1"
181
+ """``SV`` ``Oi``"""
143
182
BRAKET_DM1_SIMULATOR = "quantum-simulator/amazon/dm1"
144
183
BRAKET_TN1_SIMULATOR = "quantum-simulator/amazon/tn1"
145
184
146
185
BRAKET_IONQ_HARMONY = "qpu/ionq/Harmony"
186
+ """``S`` ``O``"""
147
187
BRAKET_IONQ_ARIA_1 = "qpu/ionq/Aria-1"
188
+ """``S`` ``O``"""
148
189
BRAKET_IONQ_ARIA_2 = "qpu/ionq/Aria-2"
190
+ """``S`` ``O``"""
149
191
BRAKET_IONQ_FORTE_1 = "qpu/ionq/Forte-1"
192
+ """``S`` ``O``"""
150
193
BRAKET_OQC_LUCY = "qpu/oqc/Lucy"
194
+ """``S`` ``O``"""
151
195
BRAKET_QUERA_AQUILA = "qpu/quera/Aquila"
196
+ """``S`` ``O``"""
152
197
BRAKET_RIGETTI_ASPEN_M_3 = "qpu/rigetti/Aspen-M-3"
198
+ """``S`` ``O``"""
153
199
154
200
def is_remote (self ):
155
201
return self != AWSDevice .BRAKET_LOCAL_SIMULATOR
@@ -236,10 +282,15 @@ class GOOGLEDevice(AvailableDevice):
236
282
"""Enum regrouping all available devices provided by CIRQ."""
237
283
238
284
CIRQ_LOCAL_SIMULATOR = "LocalSimulator"
285
+ """``S`` ``SV`` ``O`` ``Oi``"""
239
286
PROCESSOR_RAINBOW = "rainbow"
287
+ """``S``"""
240
288
PROCESSOR_WEBER = "weber"
289
+ """``S``"""
241
290
IONQ_SIMULATOR = "simulator"
291
+ """``S``"""
242
292
IONQ_QPU = "qpu"
293
+ """``S``"""
243
294
244
295
def is_remote (self ):
245
296
if self .name .startswith ("IONQ" ):
0 commit comments