可视化、接口与并行
适用版本 · ArcQML 0.1.0
本页目录
文本与 SVG 电路图
Rust 顶层接口中的 draw 只把 Circuit 渲染为 Unicode 字符串:q0 位于最上方,单量子比特门显示为边框,受控门显示为控制点和连接线,参数化门以 p<index> 或固定数值显示。
let mut circuit = Circuit::new(3)?;
circuit.h(0usize)?.cnot(0usize, 1usize)?.rz(0.3, 2usize)?;
println!("depth = {}", circuit.depth());
println!("{}", draw(&circuit));
arcqml::visualization::draw_svg(&circuit) 返回 SVG 字符串;write_svg(&circuit, path) 写入文件并返回 Result,调用方应处理写入错误:
arcqml::visualization::write_svg(&circuit, "circuit.svg")?;
Python 当前导出接口
| Python 对象/函数 | 对应 Rust 概念 | 注意事项 |
|---|---|---|
Tensor / tensor / no_grad |
arcqml::core::Tensor 与梯度模式 |
numpy() 或 item() 是显式离开 Tensor 表示的边界。 |
Circuit |
arcqml::circuit::Circuit |
只绑定常用门集;参数名值与梯度以 dict 返回。 |
StateVectorSimulator |
单态 simulator | from_amplitudes 要求 C 连续 complex128 一维 NumPy 数组。 |
BatchStateVectorSimulator |
batch simulator | from_amplitudes 要求 C 连续 complex128 二维行主序数组。 |
PauliSum |
SparsePauliOp |
用于 run 的 observable。 |
mse_loss / BCE logits |
Rust 损失函数接口的子集 | Python 当前未导出 L1、binary_nll 和多分类 CE。 |
Adam |
arcqml::optim::Adam |
默认 beta1=0.9、beta2=0.999、epsilon=1e-8、weight_decay=0。 |
Python 的 simulator.run 不修改当前态,apply_circuit 会修改当前态;这与 Rust 语义一致。Python BatchStateVectorSimulator 同样暂未支持 sample_counts。Python Circuit.gradients() 在任一参数尚未产生梯度时会按绑定层实现报告错误,故训练中应先调用 backward 再读取。
Rayon 线程池
默认启用 parallel feature 时,Rust 顶层接口提供 init_rayon(num_threads) 与 rayon_num_threads(),Python 同样导出这两个函数。初始化全局 Rayon 工作线程池必须发生在首次并行计算之前;批量路径在样本层进行任务调度,因此线程数、batch 大小、状态维度和内存带宽都会影响实际性能。线程池只能初始化一次,应用应在首次模拟之前完成配置。