Skip to content

Transpiler

Transpiler 类通过执行量子比特布局、路由、门转换、优化和调度,将逻辑量子程序映射到目标芯片拓扑。

构造

python
Transpiler()

创建一个使用默认转译过程的新 Transpiler 实例。

方法

transpile(拓扑边重载)

将量子程序映射到由耦合图边描述的芯片。

python
Transpiler.transpile(
    prog: QProg,
    chip_topology_edges: list[list[int]] = [],
    init_mapping: dict[int, int] = {},
    optimization_level: int = 2,
    basic_gates: list[str] = [],
) -> QProg

参数

参数类型描述
progQProg要转译的量子程序。
chip_topology_edgeslist[list[int]]目标芯片的耦合图。每个元素是一个二元素列表 [u, v],表示量子比特 u 和量子比特 v 之间的物理连接。默认为空列表。
init_mappingdict[int, int]从虚拟量子比特索引(键)到物理量子比特索引(值)的初始映射。默认为空字典(自动映射)。
optimization_levelint转译期间应用的优化级别。较高的值启用更激进的优化。默认为 2
basic_gateslist[str]目标门集。转译后的线路将仅包含此列表中的门。默认为空列表(使用默认门集)。

返回值

符合指定芯片拓扑和门集的转译后 QProg

transpile(后端重载)

将量子程序映射到由 ChipBackend 对象描述的芯片。

python
Transpiler.transpile(
    prog: QProg,
    backend: ChipBackend,
    init_mapping: dict[int, int] = {},
    optimization_level: int = 2,
) -> QProg

参数

参数类型描述
progQProg要转译的量子程序。
backendChipBackend封装了芯片拓扑、支持的门、时序信息和其他硬件属性的 ChipBackend 对象。
init_mappingdict[int, int]从虚拟量子比特索引(键)到物理量子比特索引(值)的初始映射。默认为空字典(自动映射)。
optimization_levelint转译期间应用的优化级别。默认为 2

返回值

符合指定后端的转译后 QProg

示例

将量子程序转译到线性拓扑:

python
from pyqpanda3.transpilation import Transpiler, generate_topology

# 生成 5 量子比特线性拓扑
topology = generate_topology(5, "linear")

# 使用核心门构建量子程序 (prog) ...
# from pyqpanda3.core import QProg, H, CNOT
# prog = QProg() << H(0) << CNOT(0, 1)

transpiler = Transpiler()
result = transpiler.transpile(
    prog,
    chip_topology_edges=topology,
    optimization_level=2,
    basic_gates=["rx", "ry", "rz", "cx"],
)

使用 ChipBackend 进行转译:

python
from pyqpanda3.transpilation import Transpiler, ChipBackend

# 从 QCloudBackend.chip_backend() 获取或手动构造后端
transpiler = Transpiler()
result = transpiler.transpile(
    prog,
    backend=backend,
    init_mapping={0: 2, 1: 3},
    optimization_level=2,
)

另见

Released under the MIT License.