线路优化与编译
优化、转译和编译是三个不同阶段:优化减少或合并门,转译把门展开到指定门基,编译进一步选择机器并完成布局映射。三者都不会提交真机任务。
from unitarylab import Circuit
qc = Circuit(2)
qc.h(0)
qc.cx(0, 1)
optimized = qc.optimize(optimization_level=1)
transpiled = qc.transpile(basis="default")
compiled = qc.compile(provider="guodun", token="your-provider-token")optimize() 和 transpile() 返回 Circuit。compile() 返回 CompilationResult,包含映射后的线路和 QCIS,但不会提交任务或消耗任务积分。compile() 支持 local、guodun 和 tianyan。
| 接口 | 返回值 | 主要参数 |
|---|---|---|
optimize(optimization_level=1) | 新 Circuit | 规则优化等级 |
transpile(gates_to_unroll=None, basis="default") | 新 Circuit | 目标门基和需要展开的门 |
compile(provider="local", machine=None, token=None) | CompilationResult | 编译目标、机器与凭据 |
原线路不会因上述调用被原地改写。编译远端机器时可能需要凭据或查询机器信息,但不会创建硬件运行任务。
需要 OpenQASM 输入或精细配置时使用 QCompiler:
from unitarylab import QCompiler
compiler = QCompiler()
optimized = compiler.optimize(circuit_or_qasm)
transpiled = compiler.transpile(qc, basis="default")
compiled = compiler.compile(circuit_or_qasm, provider="guodun", token="your-provider-token")QCompiler 还支持通过 CompileConfig 或配置字典统一设置优化、映射、硬件和执行选项。run(source, stop_at=..., start_from=...) 可控制流水线起止阶段。
CompilationResult
| 字段 | 说明 |
|---|---|
circuit / mapped_circuit | 映射后的线路 |
executable | 目标机器可执行文本 |
executable_format | 可执行格式,例如 QCIS |
optimized_circuit | 映射前的优化线路,可能为 None |
machine | 所选机器信息 |
layout、final_layout | 初始与最终逻辑–物理布局 |
qasm | 中间 OpenQASM |
stage_metadata | 各阶段结构化元数据 |
编译产物流为 raw_qasm -> optimized_qasm -> mapped_qcis。需要提交真实硬件时参见真机任务提交。
使用建议
- 先在本地执行原线路,保存基准概率或期望值。
- 优化和转译后比较门数、深度,并在小线路上比较矩阵或输出分布。
- 硬件门基、耦合图和机器状态可能改变编译结果,不要缓存为永久通用产物。
- token 不应写入文档、源代码或版本库;优先使用提供商支持的环境变量。
相关页面
最后更新于