Mengirimkan pekerjaan ke perangkat IBM tanpa Python


9

Qiskit dapat digunakan untuk mengirimkan pekerjaan ke perangkat IBM menggunakan Python (atau Swift dan JavaScript). Tetapi bagaimana jika saya ingin menggunakan bahasa yang berbeda?

Sebagai contoh, misalkan saya memiliki sirkuit spesifik yang ingin saya jalankan. Asumsikan saya sudah membuatnya dalam Python Qiskit, dan menghasilkan string qasm yang sesuai atau (idealnya) objek qobj penuh.

Saya ingin dapat menjalankan ini dan mendapatkan hasilnya kembali dalam bahasa pilihan saya.

Sejauh yang saya mengerti, ini adalah cara untuk melakukan ini melalui HTML. Informasi yang dihasilkan dalam Qiskit dapat diubah menjadi JSON, dan kemudian dikirimkan melalui web. Ini adalah cara ProjectQ mengirimkan pekerjaan ke perangkat IBM (meskipun mereka melakukannya dengan Python).

Karena rekayasa balik kode ProjectQ sedikit menakutkan, saya ingin panduan sederhana untuk menggunakan fitur ini. Terutama dalam bahasa selain Python.


1
Saya sering menjawab pertanyaan qiskit saya sendiri, tetapi saya tidak punya jawaban mudah kali ini!
James Wootton

Jawaban:


7

Saya akan mencoba menjawab dengan cara ini tetapi saya belum mencobanya sendiri. Balikkan rekayasa membaca kode dengan beberapa gagasan tentang permintaan HTML.

Mari kita asumsikan dalam bahasa pilihan Anda, Anda memiliki kemampuan untuk mengirim permintaan HTTP melalui metode GET dan POST. Ini api_urladalah https://quantumexperience.ng.bluemix.net/api/ .

Untuk mengirimkan pekerjaan, Anda akan mengirim permintaan POST dengan beberapa informasi (seperti Anda telah mengisi formulir di web dan Anda ingin berbicara dengan server). Ini seperti menangani server dengan kamus informasi. Ini akan menuju tautan https://quantumexperience.ng.bluemix.net/api/Jobs dengan tajuk permintaan POST ditetapkan sebagai application/json(menunjukkan bagaimana Anda mengirim informasi). Informasi di sini diajukan dalam format JSON di badan permintaan:

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

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

}

Saya kira kita bisa menambahkan params maxCreditsdan parameter lain untuk pengiriman. perangkat mengacu pada nama backend jika saya mengikuti komentar mereka: simulator, ibmqx4, atau ibmqx5. Anda mendapatkan jawaban kembali sebagai JSON lagi dengan argumen id yang merujuk ke execution_id.

Setelah dikirimkan, pekerjaan Anda akan berada dalam antrian. Anda harus meminta GET ID pekerjaan ini untuk mendapatkan jawaban dari backend. URL GET adalah: https://quantumexperience.ng.bluemix.net/api/Jobs/execution_id . Anda akan mendapatkan jawaban JSON lain (masukkan dalam r_jsonvariabel). Jika memiliki qasmsitem, lihat apakah r_json['qasms'][0]memiliki resultitem dan Anda akan mendapatkan hasil pengiriman.

Ini harus meringkas prosedur.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.