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参数
| 参数 | 类型 | 描述 |
|---|---|---|
| prog | QProg | 要转译的量子程序。 |
| chip_topology_edges | list[list[int]] | 目标芯片的耦合图。每个元素是一个二元素列表 [u, v],表示量子比特 u 和量子比特 v 之间的物理连接。默认为空列表。 |
| init_mapping | dict[int, int] | 从虚拟量子比特索引(键)到物理量子比特索引(值)的初始映射。默认为空字典(自动映射)。 |
| optimization_level | int | 转译期间应用的优化级别。较高的值启用更激进的优化。默认为 2。 |
| basic_gates | list[str] | 目标门集。转译后的线路将仅包含此列表中的门。默认为空列表(使用默认门集)。 |
返回值
符合指定芯片拓扑和门集的转译后 QProg。
transpile(后端重载)
将量子程序映射到由 ChipBackend 对象描述的芯片。
python
Transpiler.transpile(
prog: QProg,
backend: ChipBackend,
init_mapping: dict[int, int] = {},
optimization_level: int = 2,
) -> QProg参数
| 参数 | 类型 | 描述 |
|---|---|---|
| prog | QProg | 要转译的量子程序。 |
| backend | ChipBackend | 封装了芯片拓扑、支持的门、时序信息和其他硬件属性的 ChipBackend 对象。 |
| init_mapping | dict[int, int] | 从虚拟量子比特索引(键)到物理量子比特索引(值)的初始映射。默认为空字典(自动映射)。 |
| optimization_level | int | 转译期间应用的优化级别。默认为 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,
)另见
- generate_topology -- 生成芯片耦合图
- decompose -- 不含路由的门分解