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 等分析工具的调用图风格进行可视化。
参数
| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
| circuit | QCircuit 或 QProg | 必需 | 要分析的量子线路或程序 |
| gate_times | dict[str, float] | 必需 | 将门名称映射到其执行时间的字典 |
| is_show | bool | False | 绘制后是否显示配置文件图 |
| out_file | str | None | 保存输出图像的文件路径(例如 "profile.png") |
返回值
无。该函数生成可视化图表,并可选择保存到文件或显示。
draw_circuit_DAG
python
draw_circuit_DAG(circuit: QCircuit, is_show: bool = False,
save_fn: str = None) -> None绘制量子线路的有向无环图(DAG)表示,展示按层组织的门之间的依赖结构。
参数
| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
| circuit | QCircuit | 必需 | 要可视化为 DAG 的量子线路 |
| is_show | bool | False | 绘制后是否显示 DAG 图 |
| save_fn | str | None | 保存输出图像的文件路径 |
返回值
无。该函数生成并可选择保存或显示 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):关键路径深度相对于总深度的比例
参数
| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
| circuit | QCircuit 或 QProg | 必需 | 要分析的量子线路或程序 |
| is_show | bool | False | 是否显示雷达图 |
| save_fn | str | None | 保存雷达图图像的文件路径 |
| title | str | "" | 雷达图的标题 |
返回值
无。该函数生成并可选择保存或显示雷达图。
示例
使用门时序分析线路性能
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 和性能配置文件可视化
另见
- visualization 模块 -- 线路绘制和显示选项
- core 模块 -- 核心量子计算原语,包括 QCircuit 和 QProg