[ PROMPT_NODE_27214 ]
transpilation
[ SKILL_DOCUMENTATION ]
# 电路转译与优化
转译(Transpilation)是将量子电路重写以匹配特定量子设备拓扑和门集的过程,同时针对含噪量子计算机的执行进行优化。
## 为什么需要转译?
**问题**:抽象量子电路可能使用了硬件不支持的门,并假设了全连接(all-to-all)的量子比特连接性。
**解决方案**:转译将电路转换为:
1. 仅使用硬件原生门(基础门)
2. 遵循物理量子比特连接性
3. 最小化电路深度和门数量
4. 针对含噪设备进行误差优化
## 基础转译
### 简单转译
python
from qiskit import QuantumCircuit, transpile
qc = QuantumCircuit(3)
qc.h(0)
qc.cx(0, 1)
qc.cx(1, 2)
# 为特定后端进行转译
transpiled_qc = transpile(qc, backend=backend)
### 优化级别
选择 0-3 级的优化:
python
# 0级:无优化(最快)
qc_0 = transpile(qc, backend=backend, optimization_level=0)
# 1级:轻量优化
qc_1 = transpile(qc, backend=backend, optimization_level=1)
# 2级:中度优化(默认)
qc_2 = transpile(qc, backend=backend, optimization_level=2)
# 3级:深度优化(最慢,效果最好)
qc_3 = transpile(qc, backend=backend, optimization_level=3)
**Qiskit SDK v2.2** 相比竞争对手提供了 **83倍的转译速度提升**。
## 转译阶段
转译器流水线包含六个阶段:
### 1. 初始化阶段 (Init Stage)
- 验证电路指令
- 将多量子比特门转换为标准形式
### 2. 布局阶段 (Layout Stage)
- 将虚拟量子比特映射到物理量子比特
- 考虑量子比特连接性和错误率
python
from qiskit.transpiler import CouplingMap
# 定义自定义耦合映射
coupling = CouplingMap([(0, 1), (1, 2), (2, 3)])
qc_transpiled = transpile(qc, coupling_map=coupling)
### 3. 路由阶段 (Routing Stage)
- 插入 SWAP 门以满足连接性约束
- 最小化额外的 SWAP 开销
### 4. 转换阶段 (Translation Stage)
- 将门转换为硬件基础门
- 典型基础门:{RZ, SX, X, CX}
python
# 指定基础门
basis_gates = ['cx', 'id', 'rz', 'sx', 'x']
qc_transpiled = transpile(qc, basis_gates=basis_gates)
### 5. 优化阶段 (Optimization Stage)
- 减少门数量和电路深度
- 应用门抵消和交换规则
- 使用 **虚拟置换消除**(2-3级)
- 寻找可分解的可分离操作
### 6. 调度阶段 (Scheduling Stage)
- 添加脉冲级的时间信息