Skip to content

profiling 模块 ​

pyqpanda3.profiling 模块提供了量子线路性能分析、线路特征可视化和生成性能图表的工具。

概述 ​

profiling 模块帮助从性能角度分析量子线路,计算诸如连通性(Connectivity)、活跃度(Liveness)、并行度(Parallelism)、纠缠度(Entanglement)和关键深度(Critical Depth)等指标。它可以生成可视化性能配置文件和线路有向无环图(DAG)表示。

函数 ​

draw_circuit_profile ​

python
draw_circuit_profile(circuit: Union[QCircuit, QProg], gate_times: dict,
                     is_show: bool = False, out_file: str = None)

基于门执行时间绘制量子线路的性能配置文件。该配置文件以类似于 gprof 等分析工具的调用图风格进行可视化。

NOTE

标准输出

当 is_show=False 且未设置 out_file 时,性能概要信息将打印到标准输出而非生成可视化图形。输出内容包括门时间分解和关键路径信息。

参数 ​

参数类型默认值描述
circuitQCircuit 或 QProg必需要分析的量子线路或程序
gate_timesdict必需将门名称映射到其执行时间的字典
is_showboolFalse绘制后是否显示配置文件图
out_filestrNone保存输出图像的文件路径(例如 "profile.png")

返回值 ​

无。该函数生成可视化图表,并可选择保存到文件或显示。

draw_circuit_DAG ​

python
draw_circuit_DAG(circuit: QCircuit, is_show: bool = False,
                 save_fn=None)

绘制量子线路的有向无环图(DAG)表示,展示按层组织的门之间的依赖结构。

参数 ​

参数类型默认值描述
circuitQCircuit必需要可视化为 DAG 的量子线路
is_showboolFalse绘制后是否显示 DAG 图
save_fnstrNone保存输出图像的文件路径

返回值 ​

无。该函数生成并可选择保存或显示 DAG 可视化。

draw_circuit_features ​

python
draw_circuit_features(circuit: Union[QCircuit, QProg], is_show: bool = False,
                      save_fn: str = None, title: str = "")

计算线路特征并可视化为雷达图。计算的特征包括:

NOTE

标准输出

当 is_show=False 且未设置 save_fn 时,特征值将以文本形式打印到标准输出而非生成雷达图。输出内容包括每个特征的数值评分。

  • 程序通信(Program Communication):衡量量子比特通过门操作的连接程度
  • 活跃度(Liveness):线路中活跃使用的量子比特比例
  • 并行度(Parallelism):线路中门级并行的程度
  • 纠缠度(Entanglement):线路中纠缠能力的度量
  • 关键深度(Critical Depth):关键路径深度相对于总深度的比例

参数 ​

参数类型默认值描述
circuitQCircuit 或 QProg必需要分析的量子线路或程序
is_showboolFalse是否显示雷达图
save_fnstrNone保存雷达图图像的文件路径
titlestr""雷达图的标题

返回值 ​

无。该函数生成并可选择保存或显示雷达图。

示例 ​

使用门时序分析线路性能 ​

python
from pyqpanda3.profiling import draw_circuit_profile
from pyqpanda3.core import QCircuit, H, CNOT

circuit = QCircuit(3)
circuit << H(0) << CNOT(0, 1) << CNOT(1, 2)

# 定义门执行时间(单位:纳秒)
gate_times = {"H": 60, "CNOT": 200}

# 生成并保存性能配置文件
draw_circuit_profile(circuit, gate_times, out_file="circuit_profile.png")

可视化线路特征 ​

python
from pyqpanda3.profiling import draw_circuit_features
from pyqpanda3.core import QCircuit, H, CNOT, RX

circuit = QCircuit(3)
circuit << H(0) << CNOT(0, 1) << RX(1, 1.57) << CNOT(1, 2)

# 生成线路特征雷达图
draw_circuit_features(circuit, is_show=True, title="My Circuit")
# Output: 显示雷达图(5 个维度:程序通信、活跃度、并行度、纠缠度、关键深度)
draw_circuit_features(circuit, save_fn="features.png", title="Circuit Analysis")

绘制线路 DAG ​

python
from pyqpanda3.profiling.profiling import draw_circuit_DAG
from pyqpanda3.core import QCircuit, H, CNOT

circuit = QCircuit(3)
circuit << H(0) << CNOT(0, 1) << CNOT(1, 2)

# 可视化门依赖结构
draw_circuit_DAG(circuit, save_fn="circuit_dag.png")

依赖 ​

profiling 模块需要以下 Python 包:

  • networkx -- 用于基于图的线路分析
  • graphviz -- 用于渲染 DAG 和性能配置文件可视化

另见 ​

Released under the MIT License.