Erstellen und Ausführen von Q#-Anwendungen in Azure Quantum

In diesem Leitfaden wird beschrieben, wie Sie eine Q#-Anwendung erstellen und auf den verschiedenen Quantencomputingzielen ausführen, welche in Azure Quantum verfügbar sind. Um zu sehen, welche Arten von Quantencomputing von Azure Quantum-Angebote angeboten werden, lesen Sie den Artikel Ziele in Azure Quantum.

Erstellen und Ausführen von Anwendungen für vollständige Profilziele

Vollständige Profilziele können jedes Q#-Programm ausführen, d.h. Sie können Programme ohne Funktionseinschränkungen schreiben. Azure Quantum stellt noch kein Ziel mit diesem Profil bereit, aber Sie können jedes Q#-Programm lokal mit dem Simulator für den vollständigen Zustand oder dem Ressourcenschätzwert aus dem QDK ausprobieren.

Wenn Sie Hilfe beim Einrichten Ihrer Umgebung benötigen, um Q#-Programme lokal auszuführen, finden Sie weitere Informationen unter Erste Schritte mit dem QDK.

Sie können auch verschiedene Q#-Codebeispiele untersuchen, die lokal mit dem QDK ausgeführt werden.

Erstellen und Ausführen von Anwendungen Profilziele ohne Ablaufsteuerung

Profilziele ohne Ablaufsteuerung können eine Vielzahl von Q#-Anwendungen ausführen, mit der Einschränkung, dass sie keine Ergebnisse von Qubitmessungen verwenden können, um den Programmfluss zu steuern. Spezifischer können Werte vom Typ Result keinen Gleichheitsvergleich unterstützen.

Dieser Vorgang kann beispielsweise NICHT auf einem Ziel ohne Ablaufsteuerung ausgeführt werden:

    operation SetQubitState(desired : Result, q : Qubit) : Result {
        if (desired != M(q)) {
            X(q);
        }
    }

Wenn Sie versuchen, diesen Vorgang mit einem Ziel ohne Ablaufsteuerung auszuführen, schlägt er fehl, weil er einen Vergleich zwischen zwei Ergebnissen auswertet (desired != M(q)), um den Berechnungsablauf mit einer if-Anweisung zu steuern.

Hinweis

Derzeit gibt es eine zusätzliche Einschränkung für diese Art von Profilziel: Sie können keine Vorgänge auf Qubits anwenden, die gemessen wurden, auch wenn Sie die Ergebnisse nicht verwenden, um den Programmfluss zu steuern. Diese Einschränkung ist diesem Profiltyp nicht inhärent, ist aber auf die Situation der eingeschränkten Vorschauversion beschränkt.

Derzeit sind diese Ziele ohne Ablaufsteuerung für Azure Quantum verfügbar:

  • Anbieter: IonQ
    • IonQ-Simulator (ionq.simulator)
    • IonQ QPU: (ionq.qpu)

Erstellen von Anwendungen für IonQ-Ziele

Führen Sie die folgenden Schritte in diesem Abschnitt aus, um eine Anwendung für die Ausführung in IonQ-Zielen zu erstellen.

Voraussetzungen

Schritte

  1. Erstellen Sie eine Q#-Anwendung mithilfe der Q#-Projektvorlage.

  2. Öffnen Sie die *.csproj-Datei in einem Text-Editor (z. B. VS Code), und bearbeiten Sie die Datei in folgendem Bereich:

    • Stellen Sie sicher, dass das Projekt auf die neueste Version des QDK verweist. Sie können die neueste Version in den offiziellen QDK-Versionshinweisen überprüfen.
    • Fügen Sie eine Zeile hinzu, in der das Ziel angegeben wird:
      • IonQ-QPU: <ExecutionTarget>ionq.qpu</ExecutionTarget>
      • IonQ-Simulator: <ExecutionTarget>ionq.simulator</ExecutionTarget>

    Ihre *.csproj-Datei sollte in etwa wie folgt aussehen:

    <Project Sdk="Microsoft.Quantum.Sdk/X.XX.XXXXXXXX">
    
      <PropertyGroup>
        <OutputType>Exe</OutputType>
        <TargetFramework>netcoreapp3.1</TargetFramework>
        <ExecutionTarget>ionq.qpu</ExecutionTarget>
      </PropertyGroup>
    
    </Project>
    

    dabei ist X.XX.XXXXXXXX ein Platzhalter für die Nummer der neuesten Version des QDK.

  3. Schreiben Sie Ihr Q#-Programm, und denken Sie daran, dass Sie keine Messergebnisse vergleichen können, um den Programmablauf zu steuern.

  4. Erstellen Sie Ihr Programm lokal, und führen Sie es mithilfe der lokalen QDK-Ziele aus. So erkennen Sie, ob Ihre Q#-Anwendung in den Zielen von IonQ ausgeführt werden kann, indem die Erfüllung der Einschränkungen, die ohne Ablaufsteuerung vorhanden sind, überprüft und die erforderlichen Ressourcen berechnet werden.

    • Sie können Ihr Q#-Programm lokal mithilfe des QDK-Simulators für den vollständigen Zustand ausführen, indem Sie den Befehl dotnet run verwenden. Da Sie die ExecutionTarget in der *.csproj-Datei ausgewählt haben, werden Sie von der Konsolenausgabe gewarnt, wenn Sie eine Datei erstellt haben, die nicht mit dem Profil ohne Ablaufsteuerung kompatibel ist.
    • Sie können resources estimator verwenden, um zu schätzen, welche Ressourcen Ihr Q#-Programm für die Ausführung benötigt. Sie rufen den Ressourcenschätzwert mit dem Befehl auf: dotnet run --simulator ResourcesEstimator.
  5. Sobald Ihr Q#-Programm bereit ist, übermitteln Sie den Auftrag an Azure Quantum in Ihrer bevorzugten Umgebung, indem Sie die Ziel-ID ionq.qpu für die QPU und ionq.simulator für den Simulator verwenden.

Weitere Informationen zum Übermitteln von Aufträgen an Azure Quantum finden Sie unter:

Erstellen und Ausführen von Anwendungen für grundlegende Mess-Feedback-Ziele

Grundlegende Mess-Feedback-Profilziele können eine Vielzahl von Q#-Anwendungen ausführen, mit der Einschränkung, dass Sie Werte vom Typ Result nur als Teil von Bedingungen innerhalb von if-Anweisungen in Vorgängen vergleichen können. Die entsprechenden Bedingungsblöcke dürfen keine return- oder set-Anweisungen enthalten. Dieser Profiltyp setzt eine Verbesserung gegenüber Profilen ohne Ablaufsteuerung voraus, unterliegt aber weiterhin einigen Einschränkungen.

Derzeit hostet Azure Quantum keine Ziele mit diesem Profil, aber wir planen, einige während der eingeschränkten Überprüfung verfügbar zu machen.

Nächste Schritte

  • Nachdem Sie nun wissen, wie Sie Q#-Anwendungen erstellen, können Sie weitere Details zum Übermitteln von Aufträgen an Azure Quantum erfahren.
  • Sie können auch die verschiedenen verfügbaren Beispiele ausprobieren oder versuchen, Ihre eigenen Projekte zu übermitteln.