private DataTable RunDepthVersusWidthTest(bool optimizeDepth)
        {
            QCTraceSimulators.QCTraceSimulatorConfiguration config = ResourcesEstimator.RecommendedConfig();
            config.OptimizeDepth = optimizeDepth;
            var sim = new ResourcesEstimator(config);

            DepthVersusWidth.Run(sim).Wait();
            return(sim.Data);
        }
예제 #2
0
        public void QubitReuseSequentialTest()
        {
            QCTraceSimulators.QCTraceSimulatorConfiguration config = ResourcesEstimator.RecommendedConfig();
            config.OptimizeDepth = true;
            var sim = new ResourcesEstimator(config);

            SequentialUse.Run(sim).Wait();

            Assert.Equal(11.0, sim.Data.Rows.Find("QubitCount")["Sum"]);
            Assert.Equal(20.0, sim.Data.Rows.Find("Width")["Sum"]);
            Assert.Equal(11.0, sim.Data.Rows.Find("Depth")["Sum"]);
        }
예제 #3
0
        public void ReuseInBlockMixedTest()
        {
            QCTraceSimulators.QCTraceSimulatorConfiguration config = ResourcesEstimator.RecommendedConfig();
            config.OptimizeDepth = true;
            var sim = new ResourcesEstimator(config);

            ReuseInBlockMixed.Run(sim).Wait();

            Assert.Equal(8.0, sim.Data.Rows.Find("QubitCount")["Sum"]);
            Assert.Equal(2.0, sim.Data.Rows.Find("Width")["Sum"]);
            Assert.Equal(0.0, sim.Data.Rows.Find("Depth")["Sum"]);
        }
예제 #4
0
        public void QubitReuseSimultaneousTest()
        {
            QCTraceSimulators.QCTraceSimulatorConfiguration config = ResourcesEstimator.RecommendedConfig();
            config.OptimizeDepth = true;
            var sim = new ResourcesEstimator(config);

            SimultaneousUse.Run(sim).Wait();

            Assert.Equal(11.0, sim.Data.Rows.Find("QubitCount")["Sum"]);
            Assert.Equal(20.0, sim.Data.Rows.Find("Width")["Sum"]);
            // Note that in RecommendedConfig only T gates are depth 1, the rest are depth 0.
            Assert.Equal(1.0, sim.Data.Rows.Find("Depth")["Sum"]);
        }
        public void RecommendedConfigTest()
        {
            var actual = ResourcesEstimator.RecommendedConfig();

            Assert.Equal(1u, actual.CallStackDepthLimit);

            // This disabled by default:
            Assert.False(actual.ThrowOnUnconstrainedMeasurement);
            Assert.False(actual.UseDistinctInputsChecker);
            Assert.False(actual.UseInvalidatedQubitsUseChecker);

            // Counters that we're expecting:
            Assert.True(actual.UsePrimitiveOperationsCounter);
            Assert.True(actual.UseDepthCounter);
            Assert.True(actual.UseWidthCounter);
        }