Q_03_03_01 深度计数器

深度计数器 

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.GetMetricCCNOTDriverT深度:

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]; 

也可以看看

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值