跳转至

量子电路中间表示审计项目

📋 项目简介

本项目旨在审计 Qibo 量子计算框架对 OpenQASM 标准的支持情况,通过系统化测试明确 Qibo 在解析 QASM 代码时的能力边界与限制,为量子算法开发提供标准化的代码编写规范。

核心发现

经过全面的红蓝对抗测试,我们发现:

支持良好:QASM 2.0 语法(qreg, creg, include "qelib1.inc")及基础量子门 ❌ 不支持:QASM 3.0 高级特性(参数化门、经典控制流、数学表达式) ⚠️ 关键限制:参数化门(如 rx(theta))只能在 QASM 2.0 语法下正常工作


🚀 快速入门

环境配置

1. 创建 Conda 环境

conda env create -f environment.yml
conda activate qibo_audit_env

环境配置文件包含以下核心依赖: - Python 3.10 - JupyterLab / Notebook - qibo (审计对象) - qiskit (参考标准) - openqasm3 (参考标准) - numpy, matplotlib

2. 验证环境

运行 test_env.ipynb 确保所有库正常安装:

import qibo
print(f"Qibo Version: {qibo.__version__}")
# 预期输出: Qibo Version: 0.2.23


📂 文件结构

量子电路中间表示/
├── environment.yml          # Conda 环境配置文件
├── README.md               # 本文件(快速入门指南)
├── test_env.ipynb          # 环境验证脚本
├── qibo_qasm.ipynb         # 完整审计报告(主文档)
└── test_qibo_qasm.ipynb    # 简化版测试脚本

🔬 使用指南

方式一:查阅完整审计报告

推荐:直接打开 qibo_qasm.ipynb,该文件包含:

  1. 分层测试结果
  2. 基础指令集(H, X, CNOT, Measure)
  3. 参数化门(RX, RY)
  4. 高级特性(控制流、Reset)

  5. 差距分析矩阵:对比 QASM 3.0 标准与 Qibo 实际支持度

  6. 最佳实践模板:包含推荐和反例代码

方式二:运行独立测试

打开 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