Pythonを使用しないIBMデバイスへのジョブの送信


9

Qiskitは、Python(またはSwiftおよびJavaScript)を使用してIBMデバイスにジョブを送信するために使用できます。しかし、別の言語を使用したい場合はどうなりますか?

たとえば、実行したい特定の回路があるとします。これをPython Qiskitですでに作成し、対応するqasm文字列または(理想的には)完全なqobjオブジェクトを生成したとします。

これを実行して、選択した任意の言語で結果を取得できるようにしたいと考えています。

私が理解している限り、これらはHTMLを介してこれを行う方法です。Qiskitで生成された情報をJSONに変換して、Web経由で送信できます。これは、ProjectQがIBMデバイスにジョブを送信する方法です(ただし、Pythonで送信されます)。

ProjectQコードのリバースエンジニアリング少し難しいので、この機能を使用するための簡単なガイドが欲しいのですが。特にPython以外の言語では。


1
私はしばしば自分のqiskitの質問に答えますが、今回は簡単な答えはありません!
James Wootton、

回答:


7

私はこのように答えてみますが、私自身は試していません。HTMLリクエストのいくつかの概念を使用してコードを読み取るリバースエンジニアリングを行うだけです。

選択した言語で、GETメソッドとPOSTメソッドを介してHTTPリクエストを送信できると仮定します。これapi_urlhttps://quantumexperience.ng.bluemix.net/api/です。

ジョブを送信するには、いくつかの情報を含むPOSTリクエストを送信します(Webでフォームに入力した後、サーバーと通信したい場合など)。これは、情報のディクショナリを使用してサーバーをアドレス指定するようなものです。これは、リンクhttps://quantumexperience.ng.bluemix.net/api/Jobsに 設定され、POSTリクエストヘッダーがapplication/json(情報の送信方法を示す)に設定されます。ここの情報は、リクエストの本文にJSON形式で送信されます。

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

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

}

送信maxCredits用のparams やその他のパラメーターを追加できると思います。:デバイスは、私は彼らのコメントに従っている場合、バックエンドの名前を指しsimulatoribmqx4またはibmqx5。を参照するid引数を指定すると、JSONとして返答が返されますexecution_id

送信されると、ジョブはキューに入ります。バックエンドから回答を取得するには、このジョブIDをGETで要求する必要があります。GET URLはhttps://quantumexperience.ng.bluemix.net/api/Jobs/execution_idです。別のJSON回答が返されます(r_json変数に入れます)。それが持っている場合はqasms項目を、かどうかを確認しr_json['qasms'][0]ているresultアイテムを、あなたが提出した結果を取得します。

これは手順を要約する必要があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.