common.title

Overview
Service overview
Terms of service

Privacy policy

Contact

Sign in
Sign up
common.title

blueqatを利用して、超伝導、イオントラップ、光量子コンピュータのプログラミングと実行を行う。

Yuichiro Minato

2021/12/27 14:05

#超伝導量子ビット #イオントラップ #光量子コンピュータ

1

blueqat cloudで量子コンピュータ

最近とにかく登録者数が増えています。blueqat.comの上から登録でき、無料で量子コンピューティングができる上、有料で量子コンピュータ本体へタスクを投げられます。まだ本格的に量子コンピュータが必要という人はあまりいないと思いますが、着々と発展しています。

本日は、blueqat cloudを使ってできる3種類の計算を見てみたいと思います。2021年末時点だと、まだマシンの稼働は24時間ではなくてダウンタイムがあります。日本とアメリカでは昼間の時間の稼働時間がうまくかみ合いませんので、うまく時間調整をする必要があります。

超伝導量子コンピュータ

超電導タイプはRigettiが使えます。早速使ってみますね。最新版は40量子ビットマシンのAspen11が利用できます。どうやら2021年末時点では38量子ビットに減ってるようです。超伝導量子ビットはチップの上に超伝導の素子を置いて、極低温で冷やして利用するよくニュースで見かけるタイプのものです。blueqat-cloudのツールを読み込みます。APIの登録が終わってない人は登録をする必要があります。

from bqcloud import register_api api = register_api("APIキーをここに入れる")

登録が終わっている方は、下記から始めてみてください。

from blueqat import Circuit from bqcloud import load_api, Device #キーの読み込み api = load_api()

タスクを作るのは簡単です、回路、デバイス、実行回数を指定します。その後、タスクが処理されたかどうかを確認します。

task_rigetti = api.execute(Circuit().h[0].cx[0,1], Device.Aspen11, 10) print(task_rigetti.status())
Status.CREATED

タスクを更新することで確認をすることができます。

task_rigetti.update() print(task_rigetti.status())
Status.RUNNING
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のデバイスは量子ビットがすべて結合している全結合型と呼ばれるもので、結合をあまり考えず計算ができるので重宝します。

task_ionq = api.execute(Circuit().h[0].cx[0,1], Device.IonQDevice, 10) print(task_ionq.status())
Status.CREATED
task_ionq.update() print(task_ionq.status())
Status.COMPLETED
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年末時点では実機のマシンが手に入りませんので、シミュレータと呼ばれる普通のコンピュータで模擬的に計算をするものを利用します。

今回は以前チュートリアルでも紹介した光量子コンピュータ向けの量子テレポーテーションを紹介します。

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>output
measured x = 0.7846256386985228

measured p = -1.7915439662671235

teleported mu = [1.40325689 0.59052979]

計算ができました。

まとめ

どうでしょうか。一つのクラウドで、超伝導、イオントラップ、光量子コンピュータのプログラミングが簡単にできました。2022年にはこれに冷却原子マシンが登場予定です。また、pythonを利用しないツールも登場していますので、ますますユーザーのすそ野が広がりますね。学習が大変ですが、頑張りましょう!以上です。

© 2024, blueqat Inc. All rights reserved