Đệ trình công việc cho các thiết bị IBM mà không cần Python


9

Qiskit có thể được sử dụng để gửi công việc tới các thiết bị IBM bằng Python (hoặc Swift và JavaScript). Nhưng nếu tôi muốn sử dụng một ngôn ngữ khác thì sao?

Ví dụ: giả sử tôi có một mạch cụ thể tôi muốn chạy. Giả sử tôi đã tạo nó trong Python Qiskit và tạo chuỗi qasm tương ứng hoặc (lý tưởng nhất) đối tượng qobj đầy đủ.

Tôi muốn có thể chạy cái này và lấy lại kết quả bằng bất kỳ ngôn ngữ nào tôi chọn.

Theo tôi hiểu, đây là một cách để làm điều này thông qua HTML. Thông tin được tạo trong Qiskit có thể được chuyển thành JSON và sau đó được gửi qua web. Đây là cách ProjectQ gửi công việc tới các thiết bị của IBM (mặc dù chúng thực hiện bằng Python).

Vì kỹ thuật đảo ngược , mã ProjectQ hơi khó xử, tôi muốn có một hướng dẫn đơn giản để sử dụng tính năng này. Đặc biệt là trong một ngôn ngữ khác Python.


1
Tôi thường trả lời câu hỏi qiskit của riêng tôi, nhưng lần này tôi không có câu trả lời dễ dàng!
James Wootton

Câu trả lời:


7

Tôi sẽ cố gắng trả lời theo cách này nhưng tôi đã không tự mình thử. Chỉ cần đảo ngược kỹ thuật đọc mã với một vài khái niệm về yêu cầu HTML.

Hãy để chúng tôi giả sử theo ngôn ngữ bạn chọn, bạn có khả năng gửi yêu cầu HTTP thông qua các phương thức GET và POST. Đây api_urlhttps://quantumexperience.ng.bluemix.net/api/ .

Để gửi một công việc, bạn sẽ gửi một yêu cầu POST với một số thông tin (như bạn đã điền một biểu mẫu trên web và bạn muốn nói chuyện với một máy chủ). Nó giống như giải quyết một máy chủ với một từ điển thông tin. Nó sẽ được liên kết https://quantumexperience.ng.bluemix.net/api/Jobs với tiêu đề yêu cầu POST được đặt là application/json(hiển thị cách bạn gửi thông tin). Thông tin ở đây được gửi theo định dạng JSON trong phần thân của yêu cầu:

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

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

}

Tôi đoán chúng ta có thể thêm maxCreditsthông số và các tham số khác để gửi. thiết bị đề cập đến tên của backend nếu tôi làm theo ý kiến của họ: simulator, ibmqx4, hoặc ibmqx5. Bạn nhận được câu trả lời lại dưới dạng JSON một lần nữa với một đối số id đề cập đến execution_id.

Một khi nó được gửi, công việc của bạn sẽ được xếp hàng. Bạn sẽ phải yêu cầu bằng cách NHẬN ID công việc này để nhận câu trả lời từ phần phụ trợ. URL GET là: https://quantumexperience.ng.bluemix.net/api/Jobs/execut_id . Bạn sẽ nhận được một câu trả lời JSON khác (đặt nó trong một r_jsonbiến). Nếu nó có qasmsmặt hàng, hãy xem nếu r_json['qasms'][0]có một resultmặt hàng và bạn sẽ nhận được kết quả của việc gửi.

Điều này sẽ tổng hợp các thủ tục.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.