Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Erfahren Sie, wie Sie Visual Studio Code zum Erstellen und Übermitteln von Q#-Programmen an echte Quantenhardware verwenden. Sie können Quantum Computing-Aufträge als eigenständiges Q#-Programm an Azure Quantum übermitteln, Q# mit Python in einem Q#-Projekt kombinieren und ein Jupyter-Notizbuch ausführen.
Übermitteln von Q#-Aufträgen an Azure Quantum
Erfahren Sie, wie Sie VS Code zum Ausführen, Debuggen und Übermitteln eines Q#-Programms an Azure Quantum verwenden.
Voraussetzungen
Einzelheiten zur Installation finden Sie unter Einrichten der QDK-Erweiterung.
- Ein Azure Quantum-Arbeitsbereich in Ihrem Azure-Abonnement. Zur Erstellung eines Arbeitsbereichs, siehe bitte Erstellen eines Azure Quantum Arbeitsbereichs.
- Die neueste Version von Visual Studio Code oder öffnen Sie VS Code im Web.
- Die neueste Version der Azure Quantum Development Kit-Erweiterung.
Laden eines Q#-Beispielprogramms
Wählen Sie in VS Code "Datei > Neue Textdatei" aus, und speichern Sie die Datei als RandomNum.qs.
Öffnen Sie RandomNum.qs, geben Sie
sample
ein, wählen Sie dann in der Optionsliste Zufallsbit-Beispiel aus, und speichern Sie die Datei.
Hinweis
Sie können auch Ihre eigene Q#-Datei öffnen. Wenn Sie ein älteres Q#-Programm ausführen und Fehler auftreten, lesen Sie "Testen und Debuggen".
Ausführen eines Q#-Programms
Wenn Sie das Programm lokal auf dem integrierten Simulator testen möchten, klicken Sie in der Liste der Befehle neben dem Einstiegspunktvorgang auf "Ausführen ", oder drücken Sie STRG+F5. Die Ausgabe wird in der Debugkonsole angezeigt.
Wenn Sie Ihr Programm debuggen möchten, bevor Sie es an Azure Quantum übermitteln, klicken Sie in der Liste der Befehle neben dem Einstiegspunktvorgang auf "Debuggen ", oder drücken Sie F5. Mit den Debugsteuerelementen am oberen Rand können Sie den Code schrittweise durchlaufen, zur entsprechenden Stelle im Code gelangen und den Code wieder verlassen. Weitere Informationen zum Debuggen von Q#-Programmen finden Sie unter "Testen und Debuggen".
Visualisieren des Häufigkeits histogramms
Das Häufigkeitshistogramm stellt die Verteilung der Ergebnisse dar, die aus dem mehrmaligen Ausführen eines Quantenprogramms, auch "Schüsse" genannt, gewonnen werden. Jeder Balken im Histogramm entspricht einem möglichen Ergebnis, und seine Höhe repräsentiert die Häufigkeit, mit der dieses Ergebnis beobachtet wird. Das Häufigkeits histogramm hilft dabei, die Wahrscheinlichkeitsverteilung dieser Ergebnisse zu visualisieren.
Wählen Sie Ansicht -> Befehlspalette und geben Sie "Histogramm" ein, um die Option Q#: Datei ausführen und Histogramm anzeigen aufzurufen. Sie können auch in der Liste der Befehle neben dem Einstiegspunktvorgang auf Histogramm klicken. Wählen Sie diese Option aus, um das Q#-Histogrammfenster zu öffnen.
Geben Sie eine Reihe von Aufnahmen ein, um das Programm auszuführen, z. B. 100 Aufnahmen, und drücken Sie die EINGABETASTE. Das Histogramm wird im Q#-Histogrammfenster angezeigt.
Klicken Sie auf das Symbol für Einstellungen oben links, um Optionen anzuzeigen.
Klicken Sie auf eine Leiste, um den Prozentsatz dieses Ergebnisses anzuzeigen. In diesem Fall gibt es zwei mögliche Ergebnisse, 0 und 1, und der Prozentsatz der einzelnen Ergebnisse liegt bei 50 %.
Tipp
Sie können das Histogramm mithilfe des Mausrads oder einer Trackpadgeste zoomen. Beim Vergrößern können Sie das Diagramm verschieben, indem Sie beim Scrollen die ALT-TASTE drücken.
Visualisieren des Quantenkreises
Quantenschaltungsdiagramme sind eine visuelle Darstellung von Quantenvorgängen. Sie zeigen den Fluss von Qubits durch das Quantenprogramm, einschließlich der Tore und Messungen, die auf sie angewendet werden. Weitere Informationen finden Sie unter Quantenschaltungsdiagramme in Visual Studio Code.
Wählen Sie > aus und geben Sie „Schaltkreis“ ein, wodurch die Option „Q#: Schaltkreis anzeigen“ erscheinen sollte. Sie können auch in der Liste der Befehle neben dem Einstiegspunktvorgang auf " Circuit " klicken.
Der Schaltkreis wird im Q#-Schaltkreisfenster angezeigt. Das Schaltkreisdiagramm zeigt ein Qubit-Register, das in den Zustand |0⟩ initialisiert wird. Anschließend wird ein Hadamard-Tor , H, auf das Qubit angewendet, gefolgt von einem Messvorgang, der durch ein Metersymbol dargestellt wird. Weitere Informationen finden Sie unter Quantum Circuits Conventions.
Herstellen einer Verbindung mit Azure Quantum und Übermitteln eines Auftrags
Sie können Aufträge direkt über VS Code verbinden und übermitteln. In diesem Beispiel übermitteln Sie einen Auftrag an den Rigetti-Simulator.
Wählen Sie Ansicht -> Befehlspalette aus und geben Sie Q#: Verbinden mit einem Azure Quantum-Arbeitsbereich ein. Drücken Sie die EINGABETASTE.
Wählen Sie Azure-Konto aus, und folgen Sie den Anweisungen, um eine Verbindung mit Ihrem bevorzugten Verzeichnis, Abonnement und Arbeitsbereich herzustellen.
Hinweis
Wenn Sie über eine Verbindungszeichenfolge verfügen, können Sie die Verbindungszeichenfolge auswählen und die Verbindungszeichenfolge einfügen, die Ihrem Azure Quantum-Arbeitsbereich entspricht. Weitere Informationen finden Sie unter Herstellen einer Verbindung mit einem Quantum-Arbeitsbereich mithilfe einer Verbindungszeichenfolge.
Sobald Sie verbunden sind, erweitern Sie im Explorer-Bereich Quantum Workspaces.
Erweitern Sie Ihren Arbeitsbereich und erweitern Sie den Anbieter Rigetti .
Hinweis
Wenn beim Herstellen einer Verbindung mit Azure Quantum ein Problem vorliegt, wird neben dem Arbeitsbereichsnamen ein Warnsymbol angezeigt. Zeigen Sie auf den Arbeitsbereichsnamen, um Fehlerinformationen anzuzeigen.
Wählen Sie rigetti.sim.qvm als Ihr target.
Wählen Sie das Wiedergabesymbol rechts neben dem target Namen aus, um mit der Übermittlung des aktuellen Q#-Programms zu beginnen. Wenn Sie ein Popup erhalten, wählen Sie das QIR-Profil target ändern und fortfahren.
Fügen Sie einen Namen hinzu, um den Auftrag zu identifizieren.
Fügen Sie die Anzahl der Shots hinzu, oder die Anzahl der Durchläufe des Programms.
Drücken Sie die EINGABETASTE, um den Auftrag zu senden. Der Auftragsstatus wird unten auf dem Bildschirm angezeigt.
Erweitern Sie Aufträge, und fahren Sie mit der Maus über Ihren Auftrag, um die Zeiten und den Status Ihres Auftrags anzuzeigen.
Wählen Sie zum Anzeigen der Ergebnisse das Cloudsymbol neben dem Auftragsnamen aus, um die Ergebnisse aus dem Arbeitsbereichsspeicher herunterzuladen und in VS Code anzuzeigen.
Einreichen von Aufgaben für Jupyter-Notebooks bei Azure Quantum
Erfahren Sie, wie Sie VS Code zum Ausführen, Debuggen und Übermitteln eines Q#-Jupyter-Notizbuchs an Azure Quantum verwenden. Die Schritte in diesem Artikel gelten auch für Jupyter-Notizbücher auf Ihrem lokalen Jupyter-Server oder -Notizbücher im Azure Quantum-Portal.
Voraussetzungen
Einzelheiten zur Installation finden Sie unter Einrichten der QDK-Erweiterung.
Ein Azure Quantum-Arbeitsbereich in Ihrem Azure-Abonnement. Zur Erstellung eines Arbeitsbereichs, siehe bitte Erstellen eines Azure Quantum Arbeitsbereichs.
Eine Python-Umgebung mit installiertem Python und Pip.
VS Code mit installierten Azure Quantum Development Kit-, Python- und Jupyter-Erweiterungen .
Der Azure Quantum-Pakete
qsharp
,qsharp-widgets
undazure-quantum
sowie dasipykernel
-Paket.python -m pip install --upgrade qsharp qsharp-widgets azure-quantum ipykernel
Ausführen und Testen Des Programms im lokalen Simulator
Wählen Sie in VS Code die Ansicht > Befehlspalette und wählen Sie Erstellen: Neues Jupyter-Notebook aus.
In der oberen rechten Ecke erkennt und zeigt VS Code die Version von Python und die virtuelle Python-Umgebung an, die für das Notizbuch ausgewählt wurde. Wenn Sie über mehrere Python-Umgebungen verfügen, müssen Sie möglicherweise einen Kernel mit der Kernelauswahl oben rechts auswählen. Wenn keine Umgebung erkannt wurde, finden Sie Informationen zum Einrichten unter Jupyter-Notizbücher in VS Code .
Führen Sie in der ersten Zelle des Notizbuchs den folgenden Python-Code aus, um die erforderlichen Module zu importieren:
import qsharp import azure.quantum
- Das
qsharp
Modul aktiviert den%%qsharp
magischen Befehl, mit dem Sie Q#-Code direkt in eine Zelle eingeben können. - Das
azure-quantum
Modul bietet Konnektivität zu Ihrem Azure Quantum-Arbeitsbereich.
Hinweis
Wenn der Jupyter Python-Kernel
ipykernel
nicht erkannt wird, werden Sie von VS Code aufgefordert, ihn zu installieren.- Das
Fügen Sie eine weitere Zelle hinzu, und geben Sie diesen Q#-Code ein, der eine vom Benutzer angegebene Anzahl zufälliger Bits zurückgibt:
Hinweis
Beachten Sie, dass die Notizbuchzelle, sobald Sie den Zauberbefehl
%%qsharp
eingeben, den Typ von Python in Q# ändert.%%qsharp operation Random() : Result { use q = Qubit(); H(q); let result = M(q); Reset(q); return result } operation RandomNBits(N: Int): Result[] { mutable results = []; for i in 0 .. N - 1 { let r = Random(); results += [r]; } return results }
Um Ihre Operation zu testen, können Sie die
eval
Methode verwenden, mit der jede zuvor im Notizbuch definierte Q#-Operation aufgerufen werden kann.qsharp.eval("RandomNBits(4)")
[Zero, One, One, Zero]
Verwenden Sie die
run
Methode, um Ihr Programm auf den lokalen Simulator auszuführen. Geben Sie dasshots
, sowie die Anzahl der Ausführungswiederholungen des Programms an. Der Simulator liefert dann die Ergebnisse als Python-Liste zurück.qsharp.run("RandomNBits(4)", shots=10)
[[One, One, One, One], [Zero, Zero, One, Zero], [One, Zero, Zero, One], [Zero, One, Zero, Zero], [One, Zero, One, One], [One, Zero, One, Zero], [One, One, One, Zero], [One, One, One, One], [Zero, Zero, Zero, One], [One, Zero, Zero, One]]
Visualisieren des Quantenkreises
Sie können Quantenschaltungen mithilfe des qsharp-widgets
Pakets visualisieren. Dieses Paket stellt ein Widget bereit, das ein Quantenschaltungsdiagramm als SVG-Bild rendert. Weitere Informationen finden Sie unter Quantenschaltungsdiagramme mit Jupyter-Notizbüchern.
Fügen Sie einer neuen Zelle den folgenden Code hinzu, um den Schaltkreis zu visualisieren:
from qsharp_widgets import Circuit
Circuit(qsharp.circuit("RandomNBits(4)"))
Weitere Informationen finden Sie unter Quantum Circuits Conventions.
Kompilieren Sie Ihren Auftrag mit dem Basisprofil
Wenn Sie Programme auf dem lokalen Quantensimulator ausführen, können Sie einen beliebigen Q#-Programmtyp übermitteln. Azure Quantum-Hardware targets unterstützt jedoch noch nicht die vollständigen Funktionen, die zum Ausführen aller Q#-Programme erforderlich sind. Um Q#-Programme zu kompilieren und an Azure Quantum zu übermitteln, müssen Sie Ihr target Profil festlegen, um Q# mitzuteilen, welche Funktionen Ihre target Hardware unterstützt. Derzeit ist dies das Basisprofil. Weitere Informationen finden Sie unter Profiltypen in Azure Quantum.
So initialisieren Sie den Q#-Dolmetscher erneut, und kompilieren Sie Ihr Programm mit dem Basisprofil:
Verwenden Sie die
init
Methode, um das Profil festzulegen:qsharp.init(target_profile=qsharp.TargetProfile.Base)
Da Sie den Dolmetscher neu initialisiert haben, müssen Sie Den Code erneut mit dem neuen Profil ausführen:
%%qsharp operation Random() : Result { use q = Qubit(); H(q); let result = M(q); Reset(q); return result } operation RandomNBits(N: Int): Result[] { mutable results = []; for i in 0 .. N - 1 { let r = Random(); results += [r]; } return results }
Verwenden Sie als Nächstes die
compile
Methode, um den Vorgang oder die Funktion anzugeben, der der Einstiegspunkt zu Ihrem Programm ist. Dadurch wird Ihr Code in das QIR-Format kompiliert, das dann an jede Quantenhardware übermittelt werden kann:MyProgram = qsharp.compile("RandomNBits(4)")
Herstellen einer Verbindung mit Azure Quantum und Übermitteln eines Auftrags
Nachdem Ihr Programm nun in das richtige Format kompiliert wurde, erstellen Sie ein azure.quantum.Workspace
Objekt, um eine Verbindung mit Azure Quantum herzustellen. Sie verwenden die Ressourcen-ID Ihres Azure Quantum-Arbeitsbereichs, um eine Verbindung herzustellen. Die Ressourcen-ID und der Standort können von der Übersichtsseite Ihres Arbeitsbereichs im Azure-Portal kopiert werden.
Füllen Sie in einer neuen Zelle Ihre Ressourcen-ID und Ihren Standort aus Ihrem Azure Quantum-Arbeitsbereich aus:
MyWorkspace = azure.quantum.Workspace( resource_id = "MyResourceID", location = "MyLocation" )
Verwenden Sie die
get_targets
Methode, um die verfügbare Hardware targets in Ihrem Arbeitsbereich anzuzeigen:MyTargets = MyWorkspace.get_targets() print("This workspace's targets:") MyTargets
Wählen Sie
rigetti.sim.qvm
target aus:MyTarget = MyWorkspace.get_targets("rigetti.sim.qvm")
Verwenden Sie schließlich die
submit
Methode, um Ihr Programm mit seinen Parametern zu übermitteln und die Ergebnisse anzuzeigen:job = MyTarget.submit(MyProgram, "MyQuantumJob", shots=100) job.get_results()
{'[0, 1, 1, 1]': 0.08, '[1, 1, 0, 0]': 0.1, '[0, 0, 1, 0]': 0.04, '[0, 1, 0, 0]': 0.05, '[1, 0, 1, 0]': 0.05, '[1, 0, 0, 0]': 0.07, '[0, 1, 0, 1]': 0.07, '[1, 0, 1, 1]': 0.07, '[0, 0, 0, 0]': 0.08, '[1, 1, 1, 0]': 0.05, '[0, 0, 0, 1]': 0.1, '[0, 0, 1, 1]': 0.04, '[0, 1, 1, 0]': 0.09, '[1, 0, 0, 1]': 0.04, '[1, 1, 1, 1]': 0.05, '[1, 1, 0, 1]': 0.02}
Auf alle Eigenschaften des Jobs kann in
job.details
zugegriffen werden, z. B.:print(job.details) print("\nJob name:", job.details.name) print("Job status:", job.details.status) print("Job ID:", job.details.id)
{'additional_properties': {'isCancelling': False}, 'id': '0150202e-9638-11ee-be2f-b16153380354', 'name': 'MyQuantumJob', 'provider_id': 'rigetti'...} Job name: MyQuantumJob Job status: Succeeded Job ID: 0150202e-9638-11ee-be2f-b16153380354
Weitere Auftragsdetails
Das azure.quantum
Python-Paket enthält zusätzliche Methoden zum Anzeigen detaillierterer Auftragsdaten.
job.get_results_histogram()
: Diese Methode gibt ein Wörterbuch mit den Ergebnissen und der Shot-Zahl für jede einzelne Messung zurück. Die Ergebnisse für den vorherigen Auftrag wären zum Beispielprint(job.get_results_histogram())
{ '[0, 1, 1, 1]' : {'Outcome' : [0, 1, 1, 1], 'Count' : 8}, '[1, 1, 0, 0]' : {'Outcome' : [1, 1, 0, 0], 'Count' : 10}, '[0, 0, 1, 0]' : {'Outcome' : [0, 0, 1, 0], 'Count' : 4}, '[0, 1, 0, 0]' : {'Outcome' : [0, 1, 0, 0], 'Count' : 5}, '[1, 0, 1, 0]' : {'Outcome' : [1, 0, 1, 0], 'Count' : 5}, '[1, 0, 0, 0]' : {'Outcome' : [1, 0, 0, 0], 'Count' : 7}, '[0, 1, 0, 1]' : {'Outcome' : [0, 1, 0, 1], 'Count' : 7}, '[1, 0, 1, 1]' : {'Outcome' : [1, 0, 1, 1], 'Count' : 7}, '[0, 0, 0, 0]' : {'Outcome' : [0, 0, 0, 0], 'Count' : 8}, '[1, 1, 1, 0]' : {'Outcome' : [1, 1, 1, 0], 'Count' : 5}, '[0, 0, 0, 1]' : {'Outcome' : [0, 0, 0, 1], 'Count' : 10}, '[0, 0, 1, 1]' : {'Outcome' : [0, 0, 1, 1], 'Count' : 4}, '[0, 1, 1, 0]' : {'Outcome' : [0, 1, 1, 0], 'Count' : 9}, '[1, 0, 0, 1]' : {'Outcome' : [1, 0, 0, 1], 'Count' : 4}, '[1, 1, 1, 1]' : {'Outcome' : [1, 1, 1, 1], 'Count' : 5}, '[1, 1, 0, 1]' : {'Outcome' : [1, 1, 0, 1], 'Count' : 2} }
job.get_results_shots()
: Diese Methode gibt eine Liste der einzelnen Aufnahmeergebnisse zurück. Die Ergebnisse für den vorherigen Auftrag wären zum Beispielprint(job.get_results_shots())
[ [0, 1, 1, 1], [1, 0, 1, 1], [0, 0, 1, 1], [1, 1, 0, 1], [1, 0, 0, 0], [1, 0, 1, 1], [1, 1, 0, 1], ...]
Übermitteln von Aufträgen in Python und Q# an Azure Quantum
Erfahren Sie, wie Sie VS Code verwenden, um ein Python-Programm zu schreiben, das Q#-Vorgänge aufruft, eine Verbindung mit Azure mithilfe der Python-Befehle oder der Azure CLI herzustellen und Ihren Auftrag zu übermitteln.
Voraussetzungen
Einzelheiten zur Installation finden Sie unter Einrichten der QDK-Erweiterung.
- Ein Azure Quantum-Arbeitsbereich in Ihrem Azure-Abonnement. Zur Erstellung eines Arbeitsbereichs, siehe bitte Erstellen eines Azure Quantum Arbeitsbereichs.
- Eine Python-Umgebung mit installiertem Python und Pip.
- VS Code mit installierter Azure Quantum Development Kit - und Python-Erweiterung .
- Azure Quantum
qsharp
undazure-quantum
Pakete. - Azure CLI mit der neuesten installierten Azure Quantum-Erweiterung.
Erstellen und importieren Sie Ihre Q#-Operationen
Mit dem qsharp
Paket können Sie Ihre Funktionen und Vorgänge in Q#-Dateien speichern und Q#-Projekte erstellen, mit denen Sie sie aus Ihrem Python-Code aufrufen können. Dies ist besonders hilfreich, wenn Sie ein Programm starten müssen, das Eingabeparameter verwendet.
Führen Sie die Schritte zum Erstellen eines Q#-Projekts aus.
Öffnen Sie eine neue Textdatei, fügen Sie den folgenden Q#-Code hinzu, der eine vom Benutzer angegebene Anzahl zufälliger Bits zurückgibt, und speichern Sie die Datei im Verzeichnis "/src " in Ihrem Projekt als
Source.qs
.operation Random() : Result { use q = Qubit(); H(q); let result = M(q); Reset(q); return result } operation RandomNBits(N: Int): Result[] { mutable results = []; for i in 0 .. N - 1 { let r = Random(); results += [r]; } return results }
Öffnen Sie im Projektstammordner (mit der qsharp.json Datei) eine andere Datei, und speichern Sie sie unter
randomNum.py
.Fügen Sie den folgenden Code hinzu, um die Module
qsharp
undazure.quantum
zu importieren.import qsharp import azure.quantum
Fügen Sie als Nächstes Code zum Definieren des Q#-Projektstammordners hinzu, und testen Sie den target Vorgang im lokalen Simulator. Der Vorgang wird vom <Namespace> aufgerufen.<operation_name( )>, und in diesem Fall übergeben Sie die Anzahl der zufälligen Bits, die zurückgegeben werden sollen.
Hinweis
Da kein Namespace angegeben
Source.qs
wurde, verwendet der Compiler den Dateinamen als Standardnamespace -Source.RandomNBits()
. Weitere Informationen finden Sie unter Projekte und implizite Namespaces.qsharp.init(project_root = '../MyProjectRootFolder') print(qsharp.eval("Source.RandomNBits(4)"))
[Zero, One, One, Zero]
Sie können den Vorgang auch mit der
run
Methode testen, die einen zusätzlichenshots
Parameter übergibt, und die Ergebnisse in einer Python-Liste zurückgibt. Ersetzen Sie inrandomNum.py
den vorherigen Ausdruck durch Folgendes:result = qsharp.run("Source.RandomNBits(4)", shots=10) for x in result: print(x)
[[One, One, One, One], [Zero, Zero, One, Zero], [One, Zero, Zero, One], [Zero, One, Zero, Zero], [One, Zero, One, One], [One, Zero, One, Zero], [One, One, One, Zero], [One, One, One, One], [Zero, Zero, Zero, One], [One, Zero, Zero, One]]
Kompilieren Sie Ihren Auftrag mit dem Basisprofil
Wenn Sie Programme auf dem lokalen Quantensimulator ausführen, können Sie einen beliebigen Q#-Programmtyp übermitteln. Azure Quantum-Hardware targets unterstützt jedoch noch nicht die vollständigen Funktionen, die zum Ausführen aller Q#-Programme erforderlich sind. Um Q#-Programme zu kompilieren und an Azure Quantum zu übermitteln, müssen Sie Ihr target Profil festlegen, um Q# mitzuteilen, welche Funktionen Ihre target Hardware unterstützt. Derzeit ist das entweder das Base
- oder Adpative_RI
-Profil. Weitere Informationen finden Sie unter Profiltypen in Azure Quantum.
Hinweis
Für nur Q#-Programme in VS Code legt VS Code das Base
Profil automatisch fest.
Verwenden Sie die
init
Methode, um das Profil festzulegen:qsharp.init(project_root = '../MyProjectRootFolder', target_profile=qsharp.TargetProfile.Base)
Hinweis
Da Sie den qsharp-Zustand erneut initialisieren, müssen Sie den
project_root
Parameter erneut festlegen, damit der Compiler weiß, wo derRandomNBits
Vorgang gefunden werden soll. Dies könnte auch in Schritt 5 des vorherigen Verfahrens geschehen sein.Verwenden Sie dann die
compile
Methode, um den Vorgang oder die Funktion anzugeben, der der Einstiegspunkt für Ihr Programm ist. Das kompilierte Programm kann dann an jede Quantenhardware übermittelt werden:MyProgram = qsharp.compile("Source.RandomNBits(4)")
Herstellen einer Verbindung mit Azure Quantum und Übermitteln eines Auftrags
Sie können eine Verbindung mit Azure Quantum herstellen und Ihren Auftrag mithilfe eines python-erstellten Workspace
Objekts übermitteln oder Ihren Auftrag mithilfe der Azure CLI verbinden und übermitteln. Wenn Sie Azure CLI verwenden, müssen Sie das kompilierte Programm als Textdatei speichern und diese Datei mit einem CLI-Befehl übermitteln.
Nachdem Ihr Programm nun in das richtige Format kompiliert wurde, erstellen Sie ein azure.quantum.Workspace
Objekt, um eine Verbindung mit Azure Quantum herzustellen. Sie verwenden die Ressourcen-ID Ihres Azure Quantum-Arbeitsbereichs, um eine Verbindung herzustellen. Die Ressourcen-ID und der Standort können von der Übersichtsseite Ihres Arbeitsbereichs im Azure-Portal kopiert werden.
Fügen Sie den folgenden Code hinzu
randomNum.py
, um Ihre Ressourcen-ID und Ihren Standort aus Ihrem Azure Quantum-Arbeitsbereich auszufüllen:workspace = azure.quantum.Workspace( resource_id = "MyResourceID", location = "MyLocation" )
Verwenden Sie die
get_targets
Methode, um die verfügbare Hardware targets in Ihrem Arbeitsbereich anzuzeigen:MyTargets = workspace.get_targets() print("This workspace's targets:") for x in MyTargets: print(x)
Wählen Sie
rigetti.sim.qvm
target aus:MyTarget = workspace.get_targets("rigetti.sim.qvm")
Verwenden Sie schließlich die
submit
Methode, um Ihr Programm mit seinen Parametern zu übermitteln. Die Auftragsergebnisse werden als Python-Wörterbuch zurückgegeben.job = MyTarget.submit(MyProgram, "MyPythonJob", shots=100) results = job.get_results() print("\nResults: ", results)
So extrahieren Sie nur die Werte, und zeigen Sie sie an:
for x in results: print(x)
[0, 0, 0, 0] 0.3 [1, 0, 0, 0] 0.1 [1, 1, 1, 1] 0.3 [0, 1, 1, 1] 0.3
Auf alle Eigenschaften des Jobs kann in
job.details
zugegriffen werden, z. B.:print(job.details) print("\nJob name:", job.details.name) print("Job status:", job.details.status) print("Job ID:", job.details.id)
{'additional_properties': {'isCancelling': False}, 'id': '0fc396d2-97dd-11ee-9958-6ca1004ff31f', 'name': 'MyPythonJob', 'provider_id': 'rigetti'...} Job name: MyPythonJob Job status: Succeeded Job ID: fc396d2-97dd-11ee-9958-6ca1004ff31f
Weitere Auftragsdetails
Das azure.quantum
Python-Paket enthält zusätzliche Methoden zum Anzeigen detaillierterer Auftragsdaten.
job.get_results_histogram()
: Diese Methode gibt ein Wörterbuch mit den Ergebnissen und der Shot-Zahl für jede einzelne Messung zurück. Die Ergebnisse für den vorherigen Auftrag wären zum Beispielresults = job.get_results_histogram() for x in results.items(): print(x)
{ '[0, 0, 0, 0]' : {'Outcome' : [0, 0, 0, 0], 'Count' : 30}, '[1, 0, 0, 0]' : {'Outcome' : [1, 0, 0, 0], 'Count' : 10}, '[1, 1, 1, 1]' : {'Outcome' : [1, 1, 1, 1], 'Count' : 30}, '[0, 1, 1, 1]' : {'Outcome' : [0, 1, 1, 1], 'Count' : 30} }
job.get_results_shots()
: Diese Methode gibt eine Liste der einzelnen Aufnahmeergebnisse zurück. Die Ergebnisse für den vorherigen Auftrag wären zum Beispielprint(job.get_results_shots())
[ [0, 0, 0, 0], [1, 1, 1, 1], [0, 1, 1, 1], [1, 1, 1, 1], [1, 0, 0, 0], [0, 1, 1, 1], [0, 0, 0, 0], ...]