编译优化
这个模块主要提供拓扑结构适配、量子线路简化等编译优化功能。
1. 拓扑结构适配
在用户进行量子程序设计时,无需关注底层物理量子比特之间的连接关系。Cqlib提供的工具将在执行前完成与目标芯片拓扑结构的适配。
python
from cqlib import Circuit
from cqlib.visualization import draw_text
circuit = Circuit(3)
circuit.cz(0, 1)
circuit.cz(1, 2)
circuit.cz(0, 2)
circuit.measure_all()
print(draw_text(circuit))
┌──┐
Q0: ───■──────■──M─
│ │
Q1: ───■──■──M┼────
│ │
Q2: ──────■───■──M─
└──┘
以下以天衍云平台上的物理量子计算机 "天衍-176-Ⅱ" 为例:
python
from cqlib import TianYanPlatform
from cqlib.mapping import transpile_qcis
from cqlib.visualization import draw_text
# 这里需要将 “连接密钥”替换为用户实际的云平台访问密钥
pf = TianYanPlatform(login_key='连接密钥', machine_name='tianyan176-2')
new_circuit, initial_layout, swap_mapping, mapping_virtual_to_final = transpile_qcis(circuit.qcis, pf)
print(f'new_circuit: \n{draw_text(new_circuit)}')
print(f'初始映射: {initial_layout}\n'
f'最终映射: {mapping_virtual_to_final}')
0 gates unfinishednew_circuit:
┌──┐
Q13: ───■──■──X───■──M─
│ │ │ │
Q19: ───■──┼──X──M┼────
│ │
Q20: ──────■──────■──M─
└──┘
初始映射: {0: 19, 1: 13, 2: 20}
最终映射: {0: 13, 1: 19, 2: 20}
2. 线路简化
Cqlib 内置了若干常见的量子逻辑门优化策略 ,用于合并冗余门操作并简化量子线路。
python
from cqlib.utils import QCIS_Simplify
circuit = Circuit(2)
circuit.x2p(0)
circuit.x2m(0)
circuit.x2p(1)
circuit.measure_all()
print(f'原线路:\n{draw_text(circuit)}')
new_qcis = QCIS_Simplify().simplify(circuit.qcis)
print(f'简化后的线路:\n{draw_text(Circuit.load(new_qcis))}')
原线路:
Q0: ───X2P──X2M──M─
Q1: ───X2P───M─────
简化后的线路:
Q0: ───I(0)──M─
Q1: ───X2P───M─