原始操作计数器
原子Primitive Operations Counter
是量子计算机Trace Simulator的一部分 。 它计算在量子程序中调用的每个操作使用的原始执行次数。 Microsoft.Quantum.Primitive
所有操作均以单量子位旋转,T门,单量子位Clifford门,CNOT门以及多量子位泡利可观测量的量度表示。 收集的统计数据汇总在操作调用图的边缘。 现在让我们来计算实现CCNOT
操作需要多少个T
门。
Q#
open Microsoft.Quantum.Primitive;
operation CCNOTDriver() : () {
body {
using( qubits = Qubit[3] ) {
CCNOT(qubits[0],qubits[1],qubits[2]);
T(qubits[0]);
}
}
}
在C#程序中使用基本操作计数器
要检查CCNOT
确实需要7 T
门,并且CCNOTDriver
执行8 T
门,我们可以使用以下C#代码:
C#
// using Microsoft.Quantum.Simulation.Simulators.QCTraceSimulators;
// using System.Diagnostics;
var config = new QCTraceSimulatorConfiguration();
config.usePrimitiveOperationsCounter = true;
var sim = new QCTraceSimulator(config);
var res = CCNOTDriver.Run(sim).Result;
double tCountAll = sim.GetMetric<CCNOTDriver>(PrimitiveOperationsGroupsNames.T);
double tCount = sim.GetMetric<Primitive.CCNOT, CCNOTDriver>(PrimitiveOperationsGroupsNames.T);
程序的第一部分执行CCNOTDriver
。 在第二部分中,我们使用方法QCTraceSimulator.GetMetric
来获取由CCNOTDriver
执行的T门的CCNOTDriver
:
C#
double tCount = sim.GetMetric<Primitive.CCNOT, CCNOTDriver>(PrimitiveOperationsGroupsNames.T);
double tCountAll = sim.GetMetric<CCNOTDriver>(PrimitiveOperationsGroupsNames.T);
当使用两个类型参数调用GetMetric
,它将返回与给定调用图边相关的度量值。 在我们的示例操作中, Primitive.CCNOT
在CCNOTDriver
中调用,因此调用图包含边<Primitive.CCNOT,CCNOTDriver>
。
要获得使用的CNOT
门的数量,我们可以添加以下行:
C#
double cxCount = sim.GetMetric<Primitive.CCNOT, CCNOTDriver>(PrimitiveOperationsGroupsNames.CX);
最后,要以CSV格式输出门计数器收集的所有统计信息,我们可以使用以下内容:
C#
string csvSummary = sim.ToCSV()[MetricCalculatorsNames.primitiveOperationsCounter];
也可以看看
- 量子计算机Trace Simulator概述。