-
Notifications
You must be signed in to change notification settings - Fork 42
/
Copy pathlightning_gpu.toml
125 lines (113 loc) · 6.86 KB
/
lightning_gpu.toml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
schema = 3
# The set of all gate types supported at the runtime execution interface of the
# device, i.e., what is supported by the `execute` method of the Device API.
# The gate definition has the following format:
#
# GATE = { properties = [ PROPS ], conditions = [ CONDS ] }
#
# where PROPS and CONS are zero or more comma separated quoted strings.
#
# PROPS: zero or more comma-separated quoted strings:
# - "controllable": if a controlled version of this gate is supported.
# - "invertible": if the adjoint of this operation is supported.
# - "differentiable": if device gradient is supported for this gate.
# CONDS: zero or more comma-separated quoted strings:
# - "analytic" or "finiteshots": if this operation is only supported in
# either analytic execution or with shots, respectively.
# - "terms-commute": if this composite operator is only supported
# given that its terms commute. Only relevant for Prod, SProd, Sum,
# LinearCombination, and Hamiltonian.
#
[operators.gates]
Identity = { properties = [ "invertible", "differentiable" ] }
PauliX = { properties = [ "invertible", "controllable", "differentiable" ] }
PauliY = { properties = [ "invertible", "controllable", "differentiable" ] }
PauliZ = { properties = [ "invertible", "controllable", "differentiable" ] }
Hadamard = { properties = [ "invertible", "controllable", "differentiable" ] }
S = { properties = [ "invertible", "controllable", "differentiable" ] }
T = { properties = [ "invertible", "controllable", "differentiable" ] }
PhaseShift = { properties = [ "invertible", "controllable", "differentiable" ] }
RX = { properties = [ "invertible", "controllable", "differentiable" ] }
RY = { properties = [ "invertible", "controllable", "differentiable" ] }
RZ = { properties = [ "invertible", "controllable", "differentiable" ] }
Rot = { properties = [ "invertible", "controllable", "differentiable" ] }
CNOT = { properties = [ "invertible", "differentiable" ] }
CY = { properties = [ "invertible", "differentiable" ] }
CZ = { properties = [ "invertible", "differentiable" ] }
SWAP = { properties = [ "invertible", "controllable", "differentiable" ] }
CSWAP = { properties = [ "invertible", "differentiable" ] }
Toffoli = { properties = [ "invertible", "differentiable" ] }
IsingXX = { properties = [ "invertible", "controllable", "differentiable" ] }
IsingXY = { properties = [ "invertible", "controllable", "differentiable" ] }
IsingYY = { properties = [ "invertible", "controllable", "differentiable" ] }
IsingZZ = { properties = [ "invertible", "controllable", "differentiable" ] }
ControlledPhaseShift = { properties = [ "invertible", "differentiable" ] }
CRX = { properties = [ "invertible", "differentiable" ] }
CRY = { properties = [ "invertible", "differentiable" ] }
CRZ = { properties = [ "invertible", "differentiable" ] }
CRot = { properties = [ "invertible" ] }
SingleExcitation = { properties = [ "invertible", "controllable", "differentiable" ] }
SingleExcitationPlus = { properties = [ "invertible", "controllable", "differentiable" ] }
SingleExcitationMinus = { properties = [ "invertible", "controllable", "differentiable" ] }
DoubleExcitation = { properties = [ "invertible", "controllable", "differentiable" ] }
DoubleExcitationPlus = { properties = [ "invertible", "controllable", "differentiable" ] }
DoubleExcitationMinus = { properties = [ "invertible", "controllable", "differentiable" ] }
MultiRZ = { properties = [ "invertible", "controllable", "differentiable" ] }
QubitUnitary = { properties = [ "invertible", "controllable" ] }
GlobalPhase = { properties = [ "invertible", "controllable", "differentiable" ] }
# Operations supported by the execution in Python but not directly supported by the backend
[pennylane.operators.gates]
BlockEncode = { properties = [ "controllable" ] }
ControlledQubitUnitary = {}
ECR = {}
SX = {}
ISWAP = {}
PSWAP = {}
SISWAP = {}
SQISW = {}
OrbitalRotation = {}
QubitCarry = {}
QubitSum = {}
DiagonalQubitUnitary = {}
MultiControlledX = {}
# Observables supported by the device
[operators.observables]
Identity = { properties = [ "differentiable" ] }
PauliX = { properties = [ "differentiable" ] }
PauliY = { properties = [ "differentiable" ] }
PauliZ = { properties = [ "differentiable" ] }
Hadamard = { properties = [ "differentiable" ] }
Hermitian = { properties = [ "differentiable" ] }
SparseHamiltonian = { properties = [ "differentiable" ] }
Sum = { properties = [ "differentiable" ] }
SProd = { properties = [ "differentiable" ] }
Prod = { properties = [ "differentiable" ] }
Exp = { properties = [ "differentiable" ] }
LinearCombination = { properties = [ "differentiable" ] }
[pennylane.operators.observables]
Projector = {}
[measurement_processes]
ExpectationMP = {}
VarianceMP = {}
ProbabilityMP = {}
StateMP = { conditions = [ "analytic" ] }
SampleMP = { conditions = [ "finiteshots" ] }
CountsMP = { conditions = [ "finiteshots" ] }
# Additional support that the device may provide. All accepted fields and their
# default values are listed below. Any fields missing from the TOML file will be
# set to their default values.
[compilation]
# Whether the device is compatible with qjit.
qjit_compatible = true
# Whether the device requires run time generation of the quantum circuit.
runtime_code_generation = false
# The methods of handling mid-circuit measurements that the device supports, e.g.,
# "one-shot", "device", "tree-traversal", etc. An empty list indicates that the device
# does not support mid-circuit measurements.
supported_mcm_methods = [ "one-shot" ]
# Whether the device supports dynamic qubit allocation/deallocation.
dynamic_qubit_management = false
# Whether simultaneous measurements of non-commuting observables is supported.
non_commuting_observables = true
# Whether the device supports initial state preparation.
initial_state_prep = true