qml.资源¶
这个 resource 模块提供了类和功能,用于估计实现高级量子算法所需的量子资源(量子比特数量、电路深度等)。
期望值函数¶
|
估计在给定数量的测量中计算期望值的误差。 |
|
估计计算目标误差的期望值所需的测量次数。 |
量子相位估计资源¶
|
估计第一量化中使用平面波基的量子相位估计算法所需的非Clifford门和逻辑量子比特的数量。 |
|
估计在双重因子化哈密顿量下,量子相位估计算法中非Clifford门和逻辑量子比特的数量。 |
错误跟踪¶
|
表示抽象错误类型的抽象基类。 |
表示谱范数误差的类。 |
|
|
表示具有某种形式的算法误差的量子操作的基类。 |
资源类¶
|
包含存储关键资源的属性,例如门的数量、导线的数量、shots、深度和门类型。 |
|
表示施加于量子态的量子门或通道的基类,并存储量子门的资源要求。 |
资源函数¶
|
假设电路是串行执行的,将两个 |
|
在假设电路并行执行的情况下,添加两个 |
|
将 |
|
将 |
|
自定义操作的资源跟踪¶
我们可以使用 null.qubit 设备与 qml.Tracker 来跟踪量子电路中自定义操作所使用的资源,而无需执行。
class MyCustomAlgorithm(ResourcesOperation):
num_wires = 2
def resources(self):
return Resources(
num_wires=self.num_wires,
num_gates=5,
gate_types={"Hadamard": 2, "CNOT": 1, "PauliZ": 2},
gate_sizes={1: 4, 2: 1},
depth=3,
)
dev = qml.device("null.qubit", wires=[0, 1, 2], shots=100)
@qml.qnode(dev)
def circuit(theta):
qml.RZ(theta, wires=0)
qml.CNOT(wires=[0,1])
MyCustomAlgorithm(wires=[1, 2])
return qml.expval(qml.Z(1))
x = np.array(1.23, requires_grad=True)
with qml.Tracker(dev) as tracker:
circuit(x)
我们可以通过访问 resources 键来检查资源:
>>> resources_lst = tracker.history['resources']
>>> print(resources_lst[0])
num_wires: 3
num_gates: 7
depth: 5
shots: Shots(None)
gate_types:
{"RZ": 1, "CNOT": 2, "Hadamard": 2, "PauliZ": 2}
gate_sizes:
{1: 5, 2: 2}