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) -> None

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

参数

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

返回值

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

draw_circuit_DAG

python
draw_circuit_DAG(circuit: QCircuit, is_show: bool = False,
                 save_fn: str = None) -> 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 = "") -> None

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

  • 程序通信(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")
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.