pennylane-qrack 0.10.9__py3-none-macosx_14_0_arm64.whl → 0.25.0__py3-none-macosx_14_0_arm64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of pennylane-qrack might be problematic. Click here for more details.
- pennylane_qrack/QrackAceDeviceConfig.toml +108 -0
- pennylane_qrack/QrackDeviceConfig.toml +85 -123
- pennylane_qrack/QrackStabilizerDeviceConfig.toml +99 -0
- pennylane_qrack/_version.py +2 -2
- pennylane_qrack/qrack_ace_device.py +447 -0
- pennylane_qrack/qrack_device.cpp +66 -44
- pennylane_qrack/qrack_device.py +50 -17
- pennylane_qrack/qrack_stabilizer_device.py +313 -0
- {pennylane_qrack-0.10.9.dist-info → pennylane_qrack-0.25.0.dist-info}/METADATA +7 -3
- pennylane_qrack-0.25.0.dist-info/RECORD +15 -0
- {pennylane_qrack-0.10.9.dist-info → pennylane_qrack-0.25.0.dist-info}/WHEEL +1 -1
- pennylane_qrack-0.25.0.dist-info/entry_points.txt +4 -0
- pennylane_qrack/CMakeCache.txt +0 -394
- pennylane_qrack/Makefile +0 -230
- pennylane_qrack/cmake_install.cmake +0 -78
- pennylane_qrack/libqrack_device.dylib +0 -0
- pennylane_qrack-0.10.9.dist-info/RECORD +0 -15
- pennylane_qrack-0.10.9.dist-info/entry_points.txt +0 -2
- {pennylane_qrack-0.10.9.dist-info → pennylane_qrack-0.25.0.dist-info}/LICENSE +0 -0
- {pennylane_qrack-0.10.9.dist-info → pennylane_qrack-0.25.0.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
schema = 3
|
|
2
|
+
|
|
3
|
+
# The set of all gate types supported at the runtime execution interface of the
|
|
4
|
+
# device, i.e., what is supported by the `execute` method. The gate definitions
|
|
5
|
+
# should have the following format:
|
|
6
|
+
#
|
|
7
|
+
# GATE = { properties = [ PROPS ], conditions = [ CONDS ] }
|
|
8
|
+
#
|
|
9
|
+
# where PROPS and CONS are zero or more comma separated quoted strings.
|
|
10
|
+
#
|
|
11
|
+
# PROPS: additional support provided for each gate.
|
|
12
|
+
# - "controllable": if a controlled version of this gate is supported.
|
|
13
|
+
# - "invertible": if the adjoint of this operation is supported.
|
|
14
|
+
# - "differentiable": if device gradient is supported for this gate.
|
|
15
|
+
# CONDS: constraints on the support for each gate.
|
|
16
|
+
# - "analytic" or "finiteshots": if this operation is only supported in
|
|
17
|
+
# either analytic execution or with shots, respectively.
|
|
18
|
+
#
|
|
19
|
+
[operators.gates]
|
|
20
|
+
|
|
21
|
+
PauliX = { properties = [ "controllable", "invertible" ] }
|
|
22
|
+
PauliY = { properties = [ "controllable", "invertible" ] }
|
|
23
|
+
PauliZ = { properties = [ "controllable", "invertible" ] }
|
|
24
|
+
SX = { properties = [ "invertible" ] }
|
|
25
|
+
MultiRZ = { properties = [ "invertible" ] }
|
|
26
|
+
Hadamard = { properties = [ "invertible" ] }
|
|
27
|
+
S = { properties = [ "invertible" ] }
|
|
28
|
+
T = { properties = [ "invertible" ] }
|
|
29
|
+
CNOT = { properties = [ "invertible" ] }
|
|
30
|
+
SWAP = { properties = [ "invertible" ] }
|
|
31
|
+
ISWAP = { properties = [ "invertible" ] }
|
|
32
|
+
PSWAP = { properties = [ "invertible" ] }
|
|
33
|
+
CY = { properties = [ "invertible" ] }
|
|
34
|
+
CZ = { properties = [ "invertible" ] }
|
|
35
|
+
PhaseShift = { properties = [ "invertible" ] }
|
|
36
|
+
RX = { properties = [ "invertible" ] }
|
|
37
|
+
RY = { properties = [ "invertible" ] }
|
|
38
|
+
RZ = { properties = [ "invertible" ] }
|
|
39
|
+
Rot = { properties = [ "invertible" ] }
|
|
40
|
+
U3 = { properties = [ "invertible" ] }
|
|
41
|
+
Identity = { properties = [ "controllable", "invertible" ] }
|
|
42
|
+
|
|
43
|
+
# Observables supported by the device for measurements. The observables defined
|
|
44
|
+
# in this section should have the following format:
|
|
45
|
+
#
|
|
46
|
+
# OBSERVABLE = { conditions = [ CONDS ] }
|
|
47
|
+
#
|
|
48
|
+
# where CONDS is zero or more comma separated quoted strings, same as above.
|
|
49
|
+
#
|
|
50
|
+
# CONDS: constraints on the support for each observable.
|
|
51
|
+
# - "analytic" or "finiteshots": if this observable is only supported in
|
|
52
|
+
# either analytic execution or with shots, respectively.
|
|
53
|
+
# - "terms-commute": if a composite operator is only supported under the
|
|
54
|
+
# condition that its terms commute.
|
|
55
|
+
#
|
|
56
|
+
[operators.observables]
|
|
57
|
+
|
|
58
|
+
PauliX = {}
|
|
59
|
+
PauliY = {}
|
|
60
|
+
PauliZ = {}
|
|
61
|
+
Identity = {}
|
|
62
|
+
Prod = {}
|
|
63
|
+
# Hadamard = {}
|
|
64
|
+
# Hermitian = {}
|
|
65
|
+
# Projector = {}
|
|
66
|
+
# SparseHamiltonian = {}
|
|
67
|
+
# Hamiltonian = {}
|
|
68
|
+
# Sum = {}
|
|
69
|
+
# SProd = {}
|
|
70
|
+
# Exp = {}
|
|
71
|
+
|
|
72
|
+
# Types of measurement processes supported on the device. The measurements in
|
|
73
|
+
# this section should have the following format:
|
|
74
|
+
#
|
|
75
|
+
# MEASUREMENT_PROCESS = { conditions = [ CONDS ] }
|
|
76
|
+
#
|
|
77
|
+
# where CONDS is zero or more comma separated quoted strings, same as above.
|
|
78
|
+
#
|
|
79
|
+
# CONDS: constraints on the support for each measurement process.
|
|
80
|
+
# - "analytic" or "finiteshots": if this measurement is only supported
|
|
81
|
+
# in either analytic execution or with shots, respectively.
|
|
82
|
+
#
|
|
83
|
+
[measurement_processes]
|
|
84
|
+
|
|
85
|
+
ExpectationMP = { conditions = [ "finiteshots" ] }
|
|
86
|
+
VarianceMP = { conditions = [ "finiteshots" ] }
|
|
87
|
+
ProbabilityMP = { conditions = [ "finiteshots" ] }
|
|
88
|
+
StateMP = { conditions = [ "finiteshots" ] }
|
|
89
|
+
SampleMP = { conditions = [ "finiteshots" ] }
|
|
90
|
+
CountsMP = { conditions = [ "finiteshots" ] }
|
|
91
|
+
|
|
92
|
+
# Additional support that the device may provide that informs the compilation
|
|
93
|
+
# process. All accepted fields and their default values are listed below.
|
|
94
|
+
[compilation]
|
|
95
|
+
|
|
96
|
+
# Whether the device is compatible with qjit.
|
|
97
|
+
qjit_compatible = false
|
|
98
|
+
|
|
99
|
+
# Whether the device requires run time generation of the quantum circuit.
|
|
100
|
+
runtime_code_generation = false
|
|
101
|
+
|
|
102
|
+
# Whether the device supports allocating and releasing qubits during execution.
|
|
103
|
+
dynamic_qubit_management = false
|
|
104
|
+
|
|
105
|
+
# The methods of handling mid-circuit measurements that the device supports,
|
|
106
|
+
# e.g., "one-shot", "tree-traversal", "device", etc. An empty list indicates
|
|
107
|
+
# that the device does not support mid-circuit measurements.
|
|
108
|
+
supported_mcm_methods = [ "device", "one-shot" ]
|
|
@@ -1,89 +1,67 @@
|
|
|
1
|
-
|
|
2
|
-
schema = 2
|
|
1
|
+
schema = 3
|
|
3
2
|
|
|
4
|
-
# The
|
|
5
|
-
#
|
|
6
|
-
#
|
|
3
|
+
# The set of all gate types supported at the runtime execution interface of the
|
|
4
|
+
# device, i.e., what is supported by the `execute` method. The gate definitions
|
|
5
|
+
# should have the following format:
|
|
7
6
|
#
|
|
8
|
-
# GATE = { properties = [ PROPS ],
|
|
7
|
+
# GATE = { properties = [ PROPS ], conditions = [ CONDS ] }
|
|
9
8
|
#
|
|
10
|
-
#
|
|
9
|
+
# where PROPS and CONS are zero or more comma separated quoted strings.
|
|
11
10
|
#
|
|
12
|
-
#
|
|
13
|
-
#
|
|
14
|
-
#
|
|
15
|
-
#
|
|
11
|
+
# PROPS: additional support provided for each gate.
|
|
12
|
+
# - "controllable": if a controlled version of this gate is supported.
|
|
13
|
+
# - "invertible": if the adjoint of this operation is supported.
|
|
14
|
+
# - "differentiable": if device gradient is supported for this gate.
|
|
15
|
+
# CONDS: constraints on the support for each gate.
|
|
16
|
+
# - "analytic" or "finiteshots": if this operation is only supported in
|
|
17
|
+
# either analytic execution or with shots, respectively.
|
|
16
18
|
#
|
|
17
|
-
[operators.gates
|
|
19
|
+
[operators.gates]
|
|
18
20
|
|
|
19
|
-
PauliX
|
|
20
|
-
PauliY
|
|
21
|
-
PauliZ
|
|
22
|
-
SX
|
|
23
|
-
MultiRZ
|
|
24
|
-
Hadamard
|
|
25
|
-
S
|
|
26
|
-
T
|
|
27
|
-
CNOT
|
|
28
|
-
SWAP
|
|
29
|
-
CSWAP
|
|
30
|
-
ISWAP
|
|
31
|
-
PSWAP
|
|
32
|
-
Toffoli
|
|
33
|
-
CY
|
|
34
|
-
CZ
|
|
35
|
-
PhaseShift
|
|
36
|
-
ControlledPhaseShift
|
|
37
|
-
CPhase
|
|
38
|
-
RX
|
|
39
|
-
RY
|
|
40
|
-
RZ
|
|
41
|
-
Rot
|
|
42
|
-
CRX
|
|
43
|
-
CRY
|
|
44
|
-
CRZ
|
|
45
|
-
CRot
|
|
46
|
-
U3
|
|
47
|
-
MultiControlledX
|
|
48
|
-
Identity
|
|
21
|
+
PauliX = { properties = [ "controllable", "invertible" ] }
|
|
22
|
+
PauliY = { properties = [ "controllable", "invertible" ] }
|
|
23
|
+
PauliZ = { properties = [ "controllable", "invertible" ] }
|
|
24
|
+
SX = { properties = [ "controllable", "invertible" ] }
|
|
25
|
+
MultiRZ = { properties = [ "controllable", "invertible" ] }
|
|
26
|
+
Hadamard = { properties = [ "controllable", "invertible" ] }
|
|
27
|
+
S = { properties = [ "controllable", "invertible" ] }
|
|
28
|
+
T = { properties = [ "controllable", "invertible" ] }
|
|
29
|
+
CNOT = { properties = [ "controllable", "invertible" ] }
|
|
30
|
+
SWAP = { properties = [ "controllable", "invertible" ] }
|
|
31
|
+
CSWAP = { properties = [ "controllable", "invertible" ] }
|
|
32
|
+
ISWAP = { properties = [ "controllable", "invertible" ] }
|
|
33
|
+
PSWAP = { properties = [ "controllable", "invertible" ] }
|
|
34
|
+
Toffoli = { properties = [ "controllable", "invertible" ] }
|
|
35
|
+
CY = { properties = [ "controllable", "invertible" ] }
|
|
36
|
+
CZ = { properties = [ "controllable", "invertible" ] }
|
|
37
|
+
PhaseShift = { properties = [ "controllable", "invertible" ] }
|
|
38
|
+
ControlledPhaseShift = { properties = [ "controllable", "invertible" ] }
|
|
39
|
+
CPhase = { properties = [ "controllable", "invertible" ] }
|
|
40
|
+
RX = { properties = [ "controllable", "invertible" ] }
|
|
41
|
+
RY = { properties = [ "controllable", "invertible" ] }
|
|
42
|
+
RZ = { properties = [ "controllable", "invertible" ] }
|
|
43
|
+
Rot = { properties = [ "controllable", "invertible" ] }
|
|
44
|
+
CRX = { properties = [ "controllable", "invertible" ] }
|
|
45
|
+
CRY = { properties = [ "controllable", "invertible" ] }
|
|
46
|
+
CRZ = { properties = [ "controllable", "invertible" ] }
|
|
47
|
+
CRot = { properties = [ "controllable", "invertible" ] }
|
|
48
|
+
U3 = { properties = [ "controllable", "invertible" ] }
|
|
49
|
+
MultiControlledX = { properties = [ "controllable", "invertible" ] }
|
|
50
|
+
Identity = { properties = [ "controllable", "invertible" ] }
|
|
49
51
|
|
|
50
|
-
#
|
|
51
|
-
#
|
|
52
|
-
#
|
|
53
|
-
#
|
|
54
|
-
#
|
|
55
|
-
#
|
|
56
|
-
|
|
57
|
-
#
|
|
58
|
-
#
|
|
59
|
-
#
|
|
60
|
-
#
|
|
61
|
-
#
|
|
62
|
-
#
|
|
63
|
-
# ControlledQubitUnitary = {}
|
|
64
|
-
# DiagonalQubitUnitary = {}
|
|
65
|
-
# SingleExcitation = {}
|
|
66
|
-
# SingleExcitationPlus = {}
|
|
67
|
-
# SingleExcitationMinus = {}
|
|
68
|
-
# DoubleExcitation = {}
|
|
69
|
-
# DoubleExcitationPlus = {}
|
|
70
|
-
# DoubleExcitationMinus = {}
|
|
71
|
-
# QubitCarry = {}
|
|
72
|
-
# QubitSum = {}
|
|
73
|
-
# OrbitalRotation = {}
|
|
74
|
-
# ECR = {}
|
|
75
|
-
# IsingXX = {}
|
|
76
|
-
# IsingYY = {}
|
|
77
|
-
# IsingZZ = {}
|
|
78
|
-
# IsingXY = {}
|
|
79
|
-
# U2 = {}
|
|
80
|
-
# U1 = {}
|
|
81
|
-
# QFT = {}
|
|
82
|
-
|
|
83
|
-
# Gates which should be translated to QubitUnitary
|
|
84
|
-
# [operators.gates.matrix]
|
|
85
|
-
|
|
86
|
-
# Observables supported by the device
|
|
52
|
+
# Observables supported by the device for measurements. The observables defined
|
|
53
|
+
# in this section should have the following format:
|
|
54
|
+
#
|
|
55
|
+
# OBSERVABLE = { conditions = [ CONDS ] }
|
|
56
|
+
#
|
|
57
|
+
# where CONDS is zero or more comma separated quoted strings, same as above.
|
|
58
|
+
#
|
|
59
|
+
# CONDS: constraints on the support for each observable.
|
|
60
|
+
# - "analytic" or "finiteshots": if this observable is only supported in
|
|
61
|
+
# either analytic execution or with shots, respectively.
|
|
62
|
+
# - "terms-commute": if a composite operator is only supported under the
|
|
63
|
+
# condition that its terms commute.
|
|
64
|
+
#
|
|
87
65
|
[operators.observables]
|
|
88
66
|
|
|
89
67
|
PauliX = {}
|
|
@@ -100,56 +78,40 @@ Prod = {}
|
|
|
100
78
|
# SProd = {}
|
|
101
79
|
# Exp = {}
|
|
102
80
|
|
|
81
|
+
# Types of measurement processes supported on the device. The measurements in
|
|
82
|
+
# this section should have the following format:
|
|
83
|
+
#
|
|
84
|
+
# MEASUREMENT_PROCESS = { conditions = [ CONDS ] }
|
|
85
|
+
#
|
|
86
|
+
# where CONDS is zero or more comma separated quoted strings, same as above.
|
|
87
|
+
#
|
|
88
|
+
# CONDS: constraints on the support for each measurement process.
|
|
89
|
+
# - "analytic" or "finiteshots": if this measurement is only supported
|
|
90
|
+
# in either analytic execution or with shots, respectively.
|
|
91
|
+
#
|
|
103
92
|
[measurement_processes]
|
|
104
93
|
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
94
|
+
ExpectationMP = { conditions = [ "analytic" ] }
|
|
95
|
+
VarianceMP = { conditions = [ "analytic" ] }
|
|
96
|
+
ProbabilityMP = { conditions = [ "analytic" ] }
|
|
97
|
+
StateMP = { conditions = [ "analytic" ] }
|
|
98
|
+
SampleMP = { conditions = [ "finiteshots" ] }
|
|
99
|
+
CountsMP = { conditions = [ "finiteshots" ] }
|
|
111
100
|
|
|
101
|
+
# Additional support that the device may provide that informs the compilation
|
|
102
|
+
# process. All accepted fields and their default values are listed below.
|
|
112
103
|
[compilation]
|
|
113
104
|
|
|
114
|
-
#
|
|
105
|
+
# Whether the device is compatible with qjit.
|
|
115
106
|
qjit_compatible = true
|
|
116
|
-
# If the device requires run time generation of the quantum circuit.
|
|
117
|
-
runtime_code_generation = false
|
|
118
|
-
# If the device supports mid circuit measurements natively
|
|
119
|
-
mid_circuit_measurement = true
|
|
120
|
-
# This field is currently unchecked but it is reserved for the purpose of
|
|
121
|
-
# determining if the device supports dynamic qubit allocation/deallocation.
|
|
122
|
-
dynamic_qubit_management = true
|
|
123
107
|
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
# These options represent runtime parameters that can be passed to the device
|
|
127
|
-
# upon the device initialization.
|
|
128
|
-
# The option key will be the key in a dictionary.
|
|
129
|
-
# The string corresponds to a field queried in the `qml.Device` instance.
|
|
108
|
+
# Whether the device requires run time generation of the quantum circuit.
|
|
109
|
+
runtime_code_generation = false
|
|
130
110
|
|
|
131
|
-
#
|
|
132
|
-
|
|
133
|
-
# Use "tensor network" optimization? (Default is "true"; prevents dynamic qubit de-allocation; might function sub-optimally with "hybrid" stabilizer enabled)
|
|
134
|
-
is_tensor_network = "isTensorNetwork"
|
|
135
|
-
# Use Schmidt decomposition optimizations? (Default is "true")
|
|
136
|
-
is_schmidt_decomposed = "isSchmidtDecompose"
|
|
137
|
-
# Distribute Schmidt-decomposed qubit subsystems to multiple GPUs or accelerators, if available? (Default is "true"; mismatched device capacities might hurt overall performance)
|
|
138
|
-
is_schmidt_decomposition_parallel = "isSchmidtDecomposeMulti"
|
|
139
|
-
# Use "quantum binary decision diagram" ("QBDD") methods? (Default is "false"; note that QBDD is CPU-only)
|
|
140
|
-
is_qbdd = "isBinaryDecisionTree"
|
|
141
|
-
# Use GPU acceleration? (Default is "true")
|
|
142
|
-
is_gpu = "isOpenCL"
|
|
143
|
-
# Allocate GPU buffer from general host heap? (Default is "false"; "true" might improve performance or reliability in certain cases, like if using an Intel HD as accelerator)
|
|
144
|
-
is_host_pointer = "isHostPointer"
|
|
145
|
-
# Noise parameter. (Default is "0"; depolarizing noise intensity can also be controlled by "QRACK_GATE_DEPOLARIZATION" environment variable)
|
|
146
|
-
noise = "noise"
|
|
111
|
+
# Whether the device supports allocating and releasing qubits during execution.
|
|
112
|
+
dynamic_qubit_management = true
|
|
147
113
|
|
|
148
|
-
#
|
|
149
|
-
#
|
|
150
|
-
#
|
|
151
|
-
|
|
152
|
-
# During the initialization of your `class QuantumDevice`, the dictionary
|
|
153
|
-
# will be sent to the constructor of your implementation of `class QuantumDevice`.
|
|
154
|
-
# The dictionary will be a JSON string like the following:
|
|
155
|
-
# { 'option_key': option_field }
|
|
114
|
+
# The methods of handling mid-circuit measurements that the device supports,
|
|
115
|
+
# e.g., "one-shot", "tree-traversal", "device", etc. An empty list indicates
|
|
116
|
+
# that the device does not support mid-circuit measurements.
|
|
117
|
+
supported_mcm_methods = [ "device", "one-shot" ]
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
schema = 3
|
|
2
|
+
|
|
3
|
+
# The set of all gate types supported at the runtime execution interface of the
|
|
4
|
+
# device, i.e., what is supported by the `execute` method. The gate definitions
|
|
5
|
+
# should have the following format:
|
|
6
|
+
#
|
|
7
|
+
# GATE = { properties = [ PROPS ], conditions = [ CONDS ] }
|
|
8
|
+
#
|
|
9
|
+
# where PROPS and CONS are zero or more comma separated quoted strings.
|
|
10
|
+
#
|
|
11
|
+
# PROPS: additional support provided for each gate.
|
|
12
|
+
# - "controllable": if a controlled version of this gate is supported.
|
|
13
|
+
# - "invertible": if the adjoint of this operation is supported.
|
|
14
|
+
# - "differentiable": if device gradient is supported for this gate.
|
|
15
|
+
# CONDS: constraints on the support for each gate.
|
|
16
|
+
# - "analytic" or "finiteshots": if this operation is only supported in
|
|
17
|
+
# either analytic execution or with shots, respectively.
|
|
18
|
+
#
|
|
19
|
+
[operators.gates]
|
|
20
|
+
|
|
21
|
+
PauliX = { properties = [ "controllable", "invertible" ] }
|
|
22
|
+
PauliY = { properties = [ "controllable", "invertible" ] }
|
|
23
|
+
PauliZ = { properties = [ "controllable", "invertible" ] }
|
|
24
|
+
Hadamard = { properties = [ "invertible" ] }
|
|
25
|
+
S = { properties = [ "invertible" ] }
|
|
26
|
+
CNOT = { properties = [ "invertible" ] }
|
|
27
|
+
SWAP = { properties = [ "invertible" ] }
|
|
28
|
+
ISWAP = { properties = [ "invertible" ] }
|
|
29
|
+
PSWAP = { properties = [ "invertible" ] }
|
|
30
|
+
CY = { properties = [ "invertible" ] }
|
|
31
|
+
CZ = { properties = [ "invertible" ] }
|
|
32
|
+
Identity = { properties = [ "controllable", "invertible" ] }
|
|
33
|
+
|
|
34
|
+
# Observables supported by the device for measurements. The observables defined
|
|
35
|
+
# in this section should have the following format:
|
|
36
|
+
#
|
|
37
|
+
# OBSERVABLE = { conditions = [ CONDS ] }
|
|
38
|
+
#
|
|
39
|
+
# where CONDS is zero or more comma separated quoted strings, same as above.
|
|
40
|
+
#
|
|
41
|
+
# CONDS: constraints on the support for each observable.
|
|
42
|
+
# - "analytic" or "finiteshots": if this observable is only supported in
|
|
43
|
+
# either analytic execution or with shots, respectively.
|
|
44
|
+
# - "terms-commute": if a composite operator is only supported under the
|
|
45
|
+
# condition that its terms commute.
|
|
46
|
+
#
|
|
47
|
+
[operators.observables]
|
|
48
|
+
|
|
49
|
+
PauliX = {}
|
|
50
|
+
PauliY = {}
|
|
51
|
+
PauliZ = {}
|
|
52
|
+
Identity = {}
|
|
53
|
+
Prod = {}
|
|
54
|
+
# Hadamard = {}
|
|
55
|
+
# Hermitian = {}
|
|
56
|
+
# Projector = {}
|
|
57
|
+
# SparseHamiltonian = {}
|
|
58
|
+
# Hamiltonian = {}
|
|
59
|
+
# Sum = {}
|
|
60
|
+
# SProd = {}
|
|
61
|
+
# Exp = {}
|
|
62
|
+
|
|
63
|
+
# Types of measurement processes supported on the device. The measurements in
|
|
64
|
+
# this section should have the following format:
|
|
65
|
+
#
|
|
66
|
+
# MEASUREMENT_PROCESS = { conditions = [ CONDS ] }
|
|
67
|
+
#
|
|
68
|
+
# where CONDS is zero or more comma separated quoted strings, same as above.
|
|
69
|
+
#
|
|
70
|
+
# CONDS: constraints on the support for each measurement process.
|
|
71
|
+
# - "analytic" or "finiteshots": if this measurement is only supported
|
|
72
|
+
# in either analytic execution or with shots, respectively.
|
|
73
|
+
#
|
|
74
|
+
[measurement_processes]
|
|
75
|
+
|
|
76
|
+
ExpectationMP = { conditions = [ "analytic" ] }
|
|
77
|
+
VarianceMP = { conditions = [ "analytic" ] }
|
|
78
|
+
ProbabilityMP = { conditions = [ "analytic" ] }
|
|
79
|
+
StateMP = { conditions = [ "analytic" ] }
|
|
80
|
+
SampleMP = { conditions = [ "finiteshots" ] }
|
|
81
|
+
CountsMP = { conditions = [ "finiteshots" ] }
|
|
82
|
+
|
|
83
|
+
# Additional support that the device may provide that informs the compilation
|
|
84
|
+
# process. All accepted fields and their default values are listed below.
|
|
85
|
+
[compilation]
|
|
86
|
+
|
|
87
|
+
# Whether the device is compatible with qjit.
|
|
88
|
+
qjit_compatible = false
|
|
89
|
+
|
|
90
|
+
# Whether the device requires run time generation of the quantum circuit.
|
|
91
|
+
runtime_code_generation = false
|
|
92
|
+
|
|
93
|
+
# Whether the device supports allocating and releasing qubits during execution.
|
|
94
|
+
dynamic_qubit_management = false
|
|
95
|
+
|
|
96
|
+
# The methods of handling mid-circuit measurements that the device supports,
|
|
97
|
+
# e.g., "one-shot", "tree-traversal", "device", etc. An empty list indicates
|
|
98
|
+
# that the device does not support mid-circuit measurements.
|
|
99
|
+
supported_mcm_methods = [ "device", "one-shot" ]
|