ついにこの日が来ました。量子コンピュータを世界一簡単に使いたいですよね。RigettiとIonQを超簡単にblueqat cloudから使えます。便利なツールも出来上がりました。基本的な記事はこちらを参照していただいて、
具体的な問題を解いてみたいと思います。まずはクラウドにつなぐツールをインストール確認します。
!pip install -U blueqat-cloud
次に先ほどの記事で書いてあるAPIkeyは設定されていることとします。キーは blueqat.com の右上のメニューから発行できます。早速保存されたキーを使って回路を実装してみましょう。
from blueqat import Circuit
from bqcloud import load_api, Device
#キーの読み込み
api = load_api()
今回は基本的な重ね合わせ回路と量子もつれ回路を作ってみます。
a = Circuit().h[0]
まずは0と1の重ね合わせをIonQとRigettiのデバイスにそれぞれ投げてみます。まずはRigetti
task2 = api.execute(a, Device.Aspen9, 100)
print(task2.status())
Status.RUNNING
result2 = task2.wait(timeout=100)
if result2:
print(result2.shots())
else:
print("timeout")
Counter({'1': 55, '0': 45})
きちんと重ね合わせができています。続いてIonQを試してみます。
task = api.execute(a, Device.IonQDevice, 100)
print(task.status())
Status.CREATED
result = task.wait(timeout=100)
if result:
print(result.shots())
else:
print("timeout")
Counter({'0': 53, '1': 47})
2021年4月段階ではまだIonQはジョブの処理に時間がかかります。計算結果は素晴らしいです。
続いて量子もつれです。
b = Circuit().h[0].cx[0,1]
先ほどと同じでまずはRigettiのAspen9で、
task3 = api.execute(b, Device.Aspen9, 100)
print(task3.status())
Status.RUNNING
result3 = task3.wait(timeout=100)
if result3:
print(result3.shots())
else:
print("timeout")
Counter({'11': 38, '00': 36, '10': 21, '01': 5})
こちらは意外と早く結果が出ました。多少間違っておりますが、まぁある程度答え出ています。続いてIonQです。
task4 = api.execute(b, Device.IonQDevice, 100)
print(task4.status())
Status.CREATED
result4 = task4.wait(timeout=100)
if result4:
print(result4.shots())
else:
print("timeout")
Counter({'11': 50, '00': 47, '10': 3})
こちらは多少間違えましたが、おおむねいい感じですね!こんな簡単に量子コンピュータが使える時代が来たのはすごいと思います。以上です。