Nobisuke
Dekisugi
RAG
Privacy policy
1
お待たせしました! ついにblueqat cloudがIonQ, Rigettiのマシンにも対応しました! blueqatの知識だけで簡単にゲート方式の実機を動かすことができます。
使い方はbqcloud README にもありますが、こちらでも簡単に説明をします。
まずは、APIキーを登録します。
Copy from bqcloud import register_api api = register_api("APIキーをここに入れる")
Copy from bqcloud import load_api api = load_api()
Copy import bqcloud api = bqcloud.api.Api("APIキーをここに入れる")
blueqatの回路を使って、量子回路をクラウド経由で実行できます。
現状は、測定は自動で全ての量子ビットに対して行われるため、測定は回路に含めないでください。(この仕様は将来変更されたりデバイスにより変わるかもしれません)
Copy from blueqat import Circuit from bqcloud import Device # 回路, デバイス, ショット数, グループ名(オプション) task = api.execute(Circuit().h[0].cx[0, 1], Device.IonQDevice, 10, "hello-world") # task = api.execute(Circuit().h[0].cx[0, 1], Device.IonQDevice, 10) # のように、グループ名は無しでも構いませんが、付けておくと後でタスクを探す場合に便利です。
Copy from blueqat import Circuit from bqcloud import Device # 回路, デバイス, ショット数, グループ名(オプション) task2 = api.execute(Circuit().h[0].cx[0, 1], Device.Aspen9, 10, "hello-world") # task = api.execute(Circuit().h[0].cx[0, 1], Device.Aspen9, 10) # のように、グループ名は無しでも構いませんが、付けておくと後でタスクを探す場合に便利です。
ゲート型の量子コンピュータは、現時点では常時稼働はしておらず、また、実行の順番待ちなどもあります。そのため、実行が完了するのを待たずにTaskという形で一旦処理が返ってきます。
次のようにすることで、現在のタスクのステータスを取得できます。Status.COMPLETED
になると、結果の準備ができていることになります。
Copy print(task.status())
Status.QUEUED
次のようにして、タスクを最新の状態に更新できます。完了後にupdateすることで、結果もタスクに取得されます。
Copy task.update()
次のようにして、タスクの完了を待ち、結果を取得することもできます。
task.wait()
にタイムアウト時間(秒)を指定すると、タイムアウトしても結果が取得できない場合はNoneを返します。
タイムアウト時間を省略、または0にすると、タスクが完了するまで待ち続けます。
Copy # Wait 10 sec. If complete, result is returned, otherwise, None is returned. result = task.wait(timeout=10) if result: print(result.shots()) else: print("timeout")
timeout
一度完了したタスクは、次のようにしても結果を取得することができます。
Copy # Once updated or waited after task completed, task.result() returns the result. result = task.result() if result: print(result.shots()) else: print("result is not fetched.")
result is not fetched.
© 2024, blueqat Inc. All rights reserved