qml.devices

警告

除非您是PennyLane或插件开发者,否则您可能不需要直接使用这些类。

请查看主要插件页面以获取有关可用插件的更多详细信息。

模块

该子包提供了PennyLane的默认设备,无需安装外部插件。 默认设备提供了基本的内置量子比特和CV电路模拟器,可以与PennyLane一起使用,而不需要额外的依赖项。它们还可以在PennyLane测试套件中使用,以验证和测试量子梯度计算。

capabilities

定义DeviceCapabilities类,以及从TOML文件加载它的工具。

default_qubit

默认的qubit设备是PennyLane的标准基于qubit的设备。

default_gaussian

默认的 default.gaussian 设备是一个用于高斯连续变量量子计算的模拟器,可以作为编写PennyLane设备以支持新的CV后端的模板。

default_mixed

default.mixed 设备是 PennyLane 的标准量子比特模拟器,用于混合态计算。

default_qutrit

默认的.qutrit设备是PennyLane的标准基于qutrit的设备。

default_qutrit_mixed

默认的.qutrit.mixed设备是PennyLane用于混态计算的标准qutrit模拟器。

default_clifford

该模块包含使用 stim 的Clifford模拟器。

default_tensor

该模块包含默认的.tensor设备,用于使用 quimb 执行量子电路的张量网络模拟。

_legacy_device

该模块包含了Device抽象基类。

_qubit_device

此模块包含 QubitDevice 抽象基类。

_qutrit_device

该模块包含QutritDevice抽象基类。

null_qubit

null.qubit设备是一个无操作的设备,适用于资源估计,以及在不直接进行电路评估的情况下基准测试PennyLane的辅助功能。

reference_qubit

包含 ReferenceQubit 设备,这是一个可以用于测试和插件开发目的的最小设备。

tests

这个子包提供了与PennyLane核心功能的设备的集成测试。

下一代设备

pennylane.devices.Device 是下一代设备的最新接口,替代了 pennylane.devices.LegacyDevicepennylane.devices.QubitDevice

ExecutionConfig([在执行时启用梯度, ...])

一个用于配置量子电路在设备上执行的类。

MCMConfig([mcm_method, postselect_mode])

一个用于存储中途测量配置的类。

Device([线路, 实验次数])

一个可以控制一个或多个后端的设备驱动程序。

DefaultQubit([导线, 实验次数, 种子, 最大工作者])

一个用Python编写的PennyLane设备,能够进行反向传播导数。

DefaultTensor([wires, method, c_dtype])

一个Pennylane设备,用于使用 quimb 执行量子电路的张量网络模拟。

NullQubit([wires, shots])

用于PennyLane的空量子比特设备。

ReferenceQubit([wires, shots, seed])

一个基于numpy的精简模拟器,用于参考和测试目的。

DefaultQutritMixed([wires, shots, seed, ...])

一个基于PennyLane的Python设备,用于混合态三元量子态仿真。

LegacyDeviceFacade(设备)

一个将设备从旧的 qml.Device 接口转换为新接口的外观。

预处理变换

preprocess 模块提供了几种变换,可以用于构建 preprocess() 方法以供设备使用。

decompose(tape, stopping_condition[, ...])

分解操作直到满足停止条件。

validate_observables(tape, stopping_condition)

验证电路的可观测量和测量值。

validate_measurements(tape[, ...])

验证支持的状态和基于样本的测量过程。

validate_device_wires(tape[, wires, name])

验证胶带中存在的所有导线是否在提供的导线集合中。

validate_multiprocessing_workers(tape, ...)

验证多进程的工作线程数量。

validate_adjoint_trainable_params(tape)

如果任何可观察量是可训练的,则会引发警告;如果任何可训练参数属于状态准备操作,则会引发错误。

no_sampling(tape[, name])

如果胶带有有限的拍摄次数,则引发错误。

与设备预处理相关的其他变换包括:

defer_measurements(tape[, ...])

量子函数变换,它将基于测量结果的操作替换为受控操作。

transforms.broadcast_expand(tape)

将一个广播的胶带扩展为多个胶带,以及一个堆叠和压缩结果的函数。

transforms.split_non_commuting(tape[, ...])

将电路拆分为测量可交换观察量组的带。

修饰符

可让设备轻松添加默认行为的 modifiers

single_tape_support(cls)

修改所有函数以接受单个磁带以及批处理。

simulator_tracking(cls)

修改所有方法以添加默认的模拟器样式跟踪。

例如,使用自定义设备,我们可以添加模拟器风格的跟踪和处理单个电路的能力。有关每个修饰符的更多详细信息,请参见文档。

@simulator_tracking
@single_tape_support
class MyDevice(qml.devices.Device):

    def execute(self, circuits, execution_config = qml.devices.DefaultExecutionConfig):
        return tuple(0.0 for _ in circuits)
>>> dev = MyDevice()
>>> tape = qml.tape.QuantumTape([qml.S(0)], [qml.expval(qml.X(0))])
>>> with dev.tracker:
...     out = dev.execute(tape)
>>> out
0.0
>>> dev.tracker.history
{'batches': [1],
 'simulations': [1],
 'executions': [1],
 'results': [0.0],
 'resources': [Resources(num_wires=1, num_gates=1,
 gate_types=defaultdict(<class 'int'>, {'S': 1}),
 gate_sizes=defaultdict(<class 'int'>, {1: 1}), depth=1,
 shots=Shots(total_shots=None, shot_vector=()))]}

量子位模拟工具

用于执行基于量子比特的量子电路仿真的子模块。

此子模块为内部模块,可能会随时更改而不进行弃用周期。请自行决定是否使用。

create_initial_state(wires[, ...])

返回初始状态,如果没有提供状态准备算子,则默认为 \(\ket{0}\)

apply_operation(op, state[, ...])

对给定状态应用与运算符。

measure(测量过程, 状态[, ...])

对一个状态应用测量过程。

measure_with_samples(测量, 状态, 实验次数)

返回在给定状态上进行的测量过程的样本。

sample_probs(probs, shots, num_wires, ...[, ...])

从给定的概率中采样,在JAX和NumPy实现之间调度。

sample_state(状态, shots[, ...])

返回一系列状态的样本。

simulate(电路[, 调试器, 状态缓存])

模拟一个单一的量子脚本。

adjoint_jacobian(tape[, state])

实现了Jones and Gacon中概述的伴随方法,以区分输入带。

adjoint_jvp(tape, tangents[, state])

用于前向模式求导的雅可比向量积。

adjoint_vjp(tape, cotangents[, state])

用于反向模式微分的向量雅可比积。

三态混合态仿真工具

用于执行基于三态量子电路的混合态仿真的子模块。

此子模块为内部模块,可能会随时更改而不进行弃用周期。请自行决定是否使用。

create_initial_state(wires[, ...])

返回一个初始状态,如果没有提供状态准备算符,默认为 \(\ket{0}\bra{0}\)

apply_operation(op, state[, ...])

对给定状态应用操作。

measure(测量过程, 状态[, ...])

对一个状态应用测量过程。

measure_with_samples(mp, state, shots[, ...])

返回在给定状态上进行的测量过程的样本。

sample_probs(probs, shots, num_wires, ...)

来自三态系统的概率分布样本。

sample_state(状态, shots[, ...])

返回一个态的计算基样本序列。

simulate(电路[, rng, prng_key, debugger, ...])

模拟一个单一的量子脚本。