量子电路中间表示审计项目¶
📋 项目简介¶
本项目旨在审计 Qibo 量子计算框架对 OpenQASM 标准的支持情况,通过系统化测试明确 Qibo 在解析 QASM 代码时的能力边界与限制,为量子算法开发提供标准化的代码编写规范。
核心发现¶
经过全面的红蓝对抗测试,我们发现:
✅ 支持良好:QASM 2.0 语法(qreg, creg, include "qelib1.inc")及基础量子门
❌ 不支持:QASM 3.0 高级特性(参数化门、经典控制流、数学表达式)
⚠️ 关键限制:参数化门(如 rx(theta))只能在 QASM 2.0 语法下正常工作
🚀 快速入门¶
环境配置¶
1. 创建 Conda 环境¶
环境配置文件包含以下核心依赖: - Python 3.10 - JupyterLab / Notebook - qibo (审计对象) - qiskit (参考标准) - openqasm3 (参考标准) - numpy, matplotlib
2. 验证环境¶
运行 test_env.ipynb 确保所有库正常安装:
📂 文件结构¶
量子电路中间表示/
├── environment.yml # Conda 环境配置文件
├── README.md # 本文件(快速入门指南)
├── test_env.ipynb # 环境验证脚本
├── qibo_qasm.ipynb # 完整审计报告(主文档)
└── test_qibo_qasm.ipynb # 简化版测试脚本
🔬 使用指南¶
方式一:查阅完整审计报告¶
推荐:直接打开 qibo_qasm.ipynb,该文件包含:
- 分层测试结果
- 基础指令集(H, X, CNOT, Measure)
- 参数化门(RX, RY)
-
高级特性(控制流、Reset)
-
差距分析矩阵:对比 QASM 3.0 标准与 Qibo 实际支持度
-
最佳实践模板:包含推荐和反例代码
方式二:运行独立测试¶
打开 test_qibo_qasm.ipynb,该文件提供了标准化的审计函数:
from qibo import models, gates
def audit_qasm_conversion(test_name, qasm_string, description):
"""测试 QASM 字符串解析"""
try:
circuit = models.Circuit.from_qasm(qasm_string)
print(f"✅ [SUCCESS] {test_name}")
print(f" -> Qubits: {circuit.nqubits}, Depth: {circuit.depth}")
except Exception as e:
print(f"❌ [FAILED] {test_name}")
print(f" Reason: {str(e)}")
# 使用示例
qasm_code = """
OPENQASM 3.0;
qubit[2] q;
h q[0];
cx q[0], q[1];
"""
audit_qasm_conversion("基础测试", qasm_code, "标准纠缠电路")
💡 核心建议¶
✅ 推荐做法¶
场景 A:使用 QASM 导入
# 仅使用 QASM 2.0 语法子集
legacy_qasm = """
OPENQASM 2.0;
include "qelib1.inc";
qreg q[2];
creg c[2];
rx(1.5707) q[0]; // 使用预先计算的浮点数
cx q[0], q[1];
"""
circuit = models.Circuit.from_qasm(legacy_qasm)
场景 B:直接使用 Python API(强烈推荐)
import numpy as np
from qibo import models, gates
circuit = models.Circuit(2)
circuit.add(gates.RX(0, theta=np.pi/2)) # 支持完整数学运算
circuit.add(gates.CNOT(0, 1))
❌ 避免使用¶
# 以下特性在 Qibo 中会导致解析失败
qasm_3_0_unsupported = """
OPENQASM 3.0;
qubit q;
rx(pi/2) q; # ❌ 数学表达式
if (c == 1) { x q; } # ❌ 经典控制流
reset q; # ❌ 非幺正操作
"""
📊 关键测试结果总结¶
| 测试项 | QASM 3.0 | QASM 2.0 | 备注 |
|---|---|---|---|
| 基础门(H, X, CNOT) | ✅ | ✅ | 完全支持 |
| 测量操作 | ✅ | ✅ | 完全支持 |
| 参数化门(RX, RY) | ❌ | ✅ | 仅 2.0 支持 |
| 数学表达式(pi, +, /) | ❌ | ❌ | 使用 Python 预计算 |
| 经典控制流(if/else) | ❌ | ❌ | 改用 Python 条件语句 |
| Reset 操作 | ❌ | ❌ | 暂不支持 |
| 自定义门(gate macro) | ❌ | ❌ | 使用 Qibo Rule 或函数 |
🔧 审计环境信息¶
Python Version : 3.10.19
Qibo Version : 0.2.23
Qiskit Version : 2.2.3 (参考标准)
OpenQASM3 Lib : 1.0.1 (参考标准)
测试日期 : 2025-12-31
📚 扩展阅读¶
📝 问题反馈¶
如果您在使用过程中发现问题,建议: 1. 检查 QASM 语法版本(确保使用 2.0) 2. 避免使用数学表达式和控制流 3. 优先使用 Qibo 原生 Python API
项目作者:工作报告 最后更新:2026-01-04