Nobisuke
Dekisugi
RAG
Privacy policy
2021/12/27 14:05
1
最近とにかく登録者数が増えています。blueqat.comの上から登録でき、無料で量子コンピューティングができる上、有料で量子コンピュータ本体へタスクを投げられます。まだ本格的に量子コンピュータが必要という人はあまりいないと思いますが、着々と発展しています。
本日は、blueqat cloudを使ってできる3種類の計算を見てみたいと思います。2021年末時点だと、まだマシンの稼働は24時間ではなくてダウンタイムがあります。日本とアメリカでは昼間の時間の稼働時間がうまくかみ合いませんので、うまく時間調整をする必要があります。
超電導タイプはRigettiが使えます。早速使ってみますね。最新版は40量子ビットマシンのAspen11が利用できます。どうやら2021年末時点では38量子ビットに減ってるようです。超伝導量子ビットはチップの上に超伝導の素子を置いて、極低温で冷やして利用するよくニュースで見かけるタイプのものです。blueqat-cloudのツールを読み込みます。APIの登録が終わってない人は登録をする必要があります。
Copy from bqcloud import register_api api = register_api("APIキーをここに入れる")
登録が終わっている方は、下記から始めてみてください。
Copy from blueqat import Circuit from bqcloud import load_api, Device #キーの読み込み api = load_api()
タスクを作るのは簡単です、回路、デバイス、実行回数を指定します。その後、タスクが処理されたかどうかを確認します。
Copy task_rigetti = api.execute(Circuit().h[0].cx[0,1], Device.Aspen11, 10) print(task_rigetti.status())
Status.CREATED
タスクを更新することで確認をすることができます。
Copy task_rigetti.update() print(task_rigetti.status())
Status.RUNNING
Copy result_rigetti = task_rigetti.wait(timeout=10) if result_rigetti: print(result_rigetti.shots()) else: print("timeout")
Counter({'00': 5, '11': 4, '01': 1})
簡単に計算ができました。
イオントラップタイプはIonQが使えます。使ってみましょう。11量子ビットマシンのIonQDeviceが利用できます。イオントラップは常温真空のマシンです。空中にイオンを浮かして計算をします。使い方はRigettiと同じです。デバイスの指定が違います。IonQのデバイスは量子ビットがすべて結合している全結合型と呼ばれるもので、結合をあまり考えず計算ができるので重宝します。
Copy task_ionq = api.execute(Circuit().h[0].cx[0,1], Device.IonQDevice, 10) print(task_ionq.status())
Status.CREATED
Copy task_ionq.update() print(task_ionq.status())
Status.COMPLETED
Copy result_ionq = task_ionq.wait(timeout=10) if result_ionq: print(result_ionq.shots()) else: print("timeout")
Counter({'00': 7, '11': 3})
量子もつれ回路を実行してみましたが、問題なく計算ができています。
最後は光量子コンピュータです。光量子コンピュータではblueqatではなく、photonqatというツールを利用します。光量子コンピュータは2021年末時点では実機のマシンが手に入りませんので、シミュレータと呼ばれる普通のコンピュータで模擬的に計算をするものを利用します。
今回は以前チュートリアルでも紹介した光量子コンピュータ向けの量子テレポーテーションを紹介します。
Copy import photonqat as pq import numpy as np import matplotlib.pyplot as plt r = 2 G = pq.Gaussian(3) G.D(0, 1 + 0.5j) # state to teleport G.S(1, -r) G.S(2, r) G.BS(1, 2, np.pi/4) # 50:50 beam splitter G.BS(0, 1, np.pi/4) # 50:50 beam splitter G.MeasX(0) G.MeasP(1) G.X(2, G.Creg(0, "x", scale = np.sqrt(2))) G.Z(2, G.Creg(1, "p", scale = np.sqrt(2))) G.run() G.Wigner(2) # plot print('measured x =', G.Creg(0, "x").read()) print('measured p =', G.Creg(1, "p").read()) print('teleported mu =', G.mean(2)) # mu of qumode 0
<Figure size 432x288 with 1 Axes>
measured x = 0.7846256386985228
measured p = -1.7915439662671235
teleported mu = [1.40325689 0.59052979]
計算ができました。
どうでしょうか。一つのクラウドで、超伝導、イオントラップ、光量子コンピュータのプログラミングが簡単にできました。2022年にはこれに冷却原子マシンが登場予定です。また、pythonを利用しないツールも登場していますので、ますますユーザーのすそ野が広がりますね。学習が大変ですが、頑張りましょう!以上です。
Copy
© 2024, blueqat Inc. All rights reserved