Ablaufverfolgungssimulator für QuantencomputerQuantum Trace Simulator

Mit dem Microsoft-Ablaufverfolgungssimulator für Quantencomputer wird ein Quantenprogramm ausgeführt, ohne tatsächlich den Zustand eines Quantencomputers zu simulieren.The Microsoft quantum computer trace simulator executes a quantum program without actually simulating the state of a quantum computer. Aus diesem Grund kann der Ablaufverfolgungssimulator Quantenprogramme ausführen, für die Tausende von Qubits verwendet werden.For this reason, the trace simulator can execute quantum programs that use thousands of qubits. Dies ist für zwei Hauptaufgaben hilfreich:It is useful for two main purposes:

  • Debuggen von klassischem Code, der Teil eines Quantenprogramms istDebugging classical code that is part of a quantum program.
  • Schätzen der Ressourcen, die zum Ausführen einer bestimmten Instanz eines Quantenprogramms auf einem Quantencomputer erforderlich sindEstimating the resources required to run a given instance of a quantum program on a quantum computer.

Für den Ablaufverfolgungssimulator werden zusätzliche Informationen benötigt, die vom Benutzer angegeben werden, wenn Messungen durchgeführt werden müssen.The trace simulator relies on additional information provided by the user when measurements must be performed. Weitere Informationen hierzu finden Sie im Abschnitt Angeben der Wahrscheinlichkeit für Ergebnisse von Messungen.See Section Providing the probability of measurement outcomes for more details on this.

Angeben der Wahrscheinlichkeit für Ergebnisse von MessungenProviding the Probability of Measurement Outcomes

Es gibt zwei Arten von Messungen, die in Quantenalgorithmen angezeigt werden.There are two kinds of measurements that appear in quantum algorithms. Die erste Messung ist eine Hilfsmessung, bei der der Benutzer normalerweise über die Wahrscheinlichkeit der Ergebnisse informiert ist.The first kind plays an auxiliary role where the user usually knows the probability of the outcomes. In diesem Fall kann der Benutzer AssertProb über den Namespace Microsoft.Quantum.Intrinsic schreiben, um dies mitzuteilen.In this case the user can write AssertProb from the Microsoft.Quantum.Intrinsic namespace to express this knowledge. Das folgende Beispiel veranschaulicht dies:The following example illustrates this:

operation TeleportQubit(source : Qubit, target : Qubit) : Unit {
    using (qubit = Qubit()) {
        H(qubit);
        CNOT(qubit, target);
        CNOT(source, qubit);
        H(source);

        AssertProb([PauliZ], [source], Zero, 0.5, "Outcomes must be equally likely", 1e-5);
        AssertProb([PauliZ], [q], Zero, 0.5, "Outcomes must be equally likely", 1e-5);

        if (M(source) == One)  { Z(target); X(source); }
        if (M(q) == One) { X(target); X(q); }
    }
}

Wenn vom Ablaufverfolgungssimulator AssertProb ausgeführt wird, wird dies per Messung von PauliZ auf source aufgezeichnet, und q sollte das Ergebnis Zero bei einer Wahrscheinlichkeit von 0,5 aufweisen.When the trace simulator executes AssertProb it will record that measuring PauliZ on source and q should be given an outcome of Zero with probability 0.5. Wenn der Simulator später M ausführt, erkennt er die aufgezeichneten Werte der Ergebniswahrscheinlichkeiten, und M gibt Zero oder One mit einer Wahrscheinlichkeit von 0,5 zurück.When the simulator executes M later, it will find the recorded values of the outcome probabilities and M will return Zero or One with probability 0.5. Wenn derselbe Code in einem Simulator ausgeführt wird, mit dem der Quantenzustand nachverfolgt wird, überprüft dieser die Wahrscheinlichkeiten in AssertProb auf ihre Richtigkeit.When the same code is executed on a simulator that keeps track of the quantum state, such a simulator will check that the provided probabilities in AssertProb are correct.

Ausführen des Programms mit dem Ablaufverfolgungssimulator für QuantencomputerRunning your Program with the Quantum Computer Trace Simulator

Sie können sich den Ablaufverfolgungssimulator für Quantencomputer als regulären Zielcomputer vorstellen.The quantum computer trace simulator may be viewed as just another target machine. Das C#-Treiberprogramm für dessen Verwendung ähnelt stark den Programmen für andere Quantensimulatoren:The C# driver program for using it is very similar to the one for any other quantum Simulator:

using Microsoft.Quantum.Simulation.Core;
using Microsoft.Quantum.Simulation.Simulators;
using Microsoft.Quantum.Simulation.Simulators.QCTraceSimulators;

namespace Quantum.MyProgram
{
    class Driver
    {
        static void Main(string[] args)
        {
            QCTraceSimulator sim = new QCTraceSimulator();
            var res = MyQuantumProgram.Run().Result;
            System.Console.WriteLine("Press any key to continue...");
            System.Console.ReadKey();
        }
    }
}

Beachten Sie Folgendes: Wenn mindestens eine Messung nicht über AssertProb mit Anmerkungen versehen wurde, löst der Simulator UnconstrainedMeasurementException über den Namespace Microsoft.Quantum.Simulation.Simulators.QCTraceSimulators aus.Note that if there is at least one measurement not annotated using AssertProb, the simulator will throw UnconstrainedMeasurementException from the Microsoft.Quantum.Simulation.Simulators.QCTraceSimulators namespace. Weitere Informationen finden Sie in der API-Dokumentation zu UnconstrainedMeasurementException.See the API documentation on UnconstrainedMeasurementException for more details.

Zusätzlich zur Ausführung von Quantenprogrammen verfügt der Ablaufverfolgungssimulator noch über fünf Komponenten zur Erkennung von Fehlern in Programmen und zur Durchführung von Ressourcenschätzungen für Quantenprogramme:In addition to running quantum programs, the trace simulator comes with five components for detecting bugs in programs and performing quantum program resource estimates:

Jede dieser Komponenten kann aktiviert werden, indem in QCTraceSimulatorConfiguration geeignete Flags festgelegt werden.Each of these components may be enabled by setting appropriate flags in QCTraceSimulatorConfiguration. Weitere Informationen zur Verwendung dieser Komponenten finden Sie in den entsprechenden Referenzdateien.More details about using each of these components are provided in the corresponding reference files. Ausführliche Informationen finden Sie in der API-Dokumentation zu QCTraceSimulatorConfiguration.See the API documentation on QCTraceSimulatorConfiguration for specific details.

Weitere InformationenSee also

Ablaufverfolgungssimulator für Quantencomputer: C#-ReferenzThe quantum computer trace simulator C# reference