Übertragen von Jobs an IBM Geräte ohne Python


9

Mit Qiskit können Jobs mit Python (oder Swift und JavaScript) an IBM Geräte gesendet werden. Aber was ist, wenn ich eine andere Sprache verwenden möchte?

Angenommen, ich habe eine bestimmte Schaltung, die ich ausführen möchte. Angenommen, ich habe es bereits in Python Qiskit erstellt und die entsprechende qasm-Zeichenfolge oder (idealerweise) das vollständige qobj-Objekt generiert.

Ich möchte dies ausführen und die Ergebnisse in einer beliebigen Sprache meiner Wahl zurückerhalten können.

Soweit ich weiß, ist dies eine Möglichkeit, dies über HTML zu tun. Die in Qiskit generierten Informationen können in einen JSON umgewandelt und dann über das Web übermittelt werden. Auf diese Weise sendet ProjectQ Jobs an IBM Geräte (obwohl dies in Python der Fall ist).

Da das Reverse Engineering des ProjectQ-Codes ein wenig entmutigend ist, möchte ich eine einfache Anleitung zur Verwendung dieser Funktion. Besonders in einer anderen Sprache als Python.


1
Ich beantworte oft meine eigenen Qiskit-Fragen, aber diesmal habe ich keine einfachen Antworten!
James Wootton

Antworten:


7

Ich werde versuchen, auf diese Weise zu antworten, aber ich habe es selbst nicht versucht. Reverse Engineering Lesen Sie den Code mit ein paar Begriffen der HTML-Anfrage.

Nehmen wir an, Sie haben in der Sprache Ihrer Wahl die Möglichkeit, HTTP-Anfragen über GET- und POST-Methoden zu senden. Das api_urlist https://quantumexperience.ng.bluemix.net/api/ .

Um einen Job zu senden, senden Sie eine POST-Anfrage mit einigen Informationen (z. B. wenn Sie ein Formular im Web ausgefüllt haben und mit einem Server sprechen möchten). Es ist, als würde man einen Server mit einem Wörterbuch mit Informationen ansprechen. Es wird auf den Link https://quantumexperience.ng.bluemix.net/api/Jobs mit dem POST-Anforderungsheader gesetzt application/json(der zeigt, wie Sie die Informationen übermitteln). Die Informationen hier werden in einer JSON-Formatierung im Hauptteil der Anforderung übermittelt:

{
   "data": QASM as string or JSON string,

   "params": {"access_token": access_token,
                              "deviceRunType": device,
                              "fromCache": "false",
                              "shots": shots}

}

Ich denke, wir können Parameter maxCreditsund andere Parameter für die Einreichung hinzufügen . Gerät bezieht sich auf den Namen des Back - End , wenn ich ihre Kommentare folgen: simulator, ibmqx4oder ibmqx5. Sie erhalten erneut eine Antwort als JSON mit einem ID-Argument, das sich auf das bezieht execution_id.

Sobald es gesendet wurde, steht Ihr Job in der Warteschlange. Sie müssen diese Job-ID von GET anfordern, um die Antwort vom Backend zu erhalten. Die GET-URL lautet: https://quantumexperience.ng.bluemix.net/api/Jobs/execution_id . Sie erhalten eine weitere JSON-Antwort (fügen Sie sie in eine r_jsonVariable ein). Wenn der qasmsArtikel vorhanden ist, prüfen Sie, ob er r_json['qasms'][0]einen resultArtikel enthält, und Sie erhalten das Ergebnis der Übermittlung.

Dies sollte das Verfahren zusammenfassen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.