深度计数器
Depth Counter
是量子计算机Trace Simulator的一部分 。 它用于收集量子程序中调用的每个操作的深度计数。 Microsoft.Quantum.Primitive
所有操作均以单量子位旋转,T门,单量子位Clifford门,CNOT门以及多量子位泡利可观测量的量度表示。 用户可以设置每个基本操作的深度。
默认情况下,除深度为1的T门以外,所有操作的深度均为0。这意味着默认情况下,仅计算T操作深度(这通常是合意的)。 收集的统计数据汇总在操作调用图的所有边上。
现在让我们计算CCNOT
操作的T
深度。 我们将使用以下Q#驱动程序代码:
Q#
open Microsoft.Quantum.Primitive;
operation CCNOTDriver() : () {
body {
using( qubits = Qubit[3] ) {
CCNOT(qubits[0],qubits[1],qubits[2]);
T(qubits[0]);
}
}
}
在C#程序中使用深度计数器
要检查CCNOTDriver
T
深度为5, CCNOTDriver
T
深度为6,我们可以使用以下C#代码:
C#
using Microsoft.Quantum.Simulation.Simulators.QCTraceSimulators;
using System.Diagnostics;
var config = new QCTraceSimulatorConfiguration();
config.useDepthCounter = true;
var sim = new QCTraceSimulator(config);
var res = CCNOTDriver.Run(sim).Result;
double tDepth = sim.GetMetric<Primitive.CCNOT, CCNOTDriver>(DepthCounter.Metrics.Depth);
double tDepthAll = sim.GetMetric<CCNOTDriver>(DepthCounter.Metrics.Depth);
程序的第一部分执行CCNOTDriver
。 在第二部分中,我们使用QCTraceSimulator.GetMetric
方法获取QCTraceSimulator.GetMetric
和CCNOTDriver
的T
深度:
C#
double tDepth = sim.GetMetric<Primitive.CCNOT, CCNOTDriver>(DepthCounter.Metrics.Depth);
double tDepthAll = sim.GetMetric<CCNOTDriver>(DepthCounter.Metrics.Depth);
最后,要以CSV格式输出Depth Counter
收集的所有统计数据,我们可以使用以下内容:
C#
string csvSummary = sim.ToCSV()[MetricCalculatorsNames.depthCounter];
也可以看看
- 量子计算机Trace Simulator概述。