Nobisuke
Dekisugi
RAG
Privacy policy
2022/10/14 11:04
本日は珍しいイギリス製の量子コンピュータを使ってみます。量子コンピュータというとアメリカという感じがしますが、最近は全世界で使えるマシンが増えています。
OQC
https://oxfordquantumcircuits.com/
超伝導タイプとなっています。なんか適当な問題を設定して動かしてみようと思います。
Copy from braket.circuits import Circuit from braket.devices import LocalSimulator import matplotlib.pyplot as plt %matplotlib inline
まずは量子回路をシミュレートしてみます。
Copy bell = Circuit().h(0).cnot(0,1) print(bell)
T : |0|1|
q0 : -H-C-
|
q1 : ---X-
T : |0|1|
Copy #デバイス指定でシミュレータ指定 device = LocalSimulator() #10回計算してみます result = device.run(bell, shots=10).result() #計算結果の表示 counts = result.measurement_counts print(counts) #そのまま描画 plt.bar(counts.keys(), counts.values());
Counter({'11': 6, '00': 4})
<Figure size 432x288 with 1 Axes>
つぎにLucyを準備します。念のためゲートセットも確認します。
Copy from braket.aws import AwsDevice device = AwsDevice("arn:aws:braket:eu-west-2::device/qpu/oqc/Lucy") print(device.properties.action['braket.ir.jaqcd.program'].supportedOperations)
['ccnot', 'cnot', 'cphaseshift', 'cswap', 'cy', 'cz', 'h', 'i', 'phaseshift', 'rx', 'ry', 'rz', 's', 'si', 'swap', 't', 'ti', 'v', 'vi', 'x', 'y', 'z', 'ecr', 'start_verbatim_box', 'end_verbatim_box']
そして早速投げてみましょう。100回計算してみます。
Copy task = device.run(bell, shots=100) #計算結果の表示 counts = task.result().measurement_counts print(counts) #そのまま描画 plt.bar(counts.keys(), counts.values());
Counter({'00': 54, '11': 36, '10': 6, '01': 4})
<Figure size 432x288 with 1 Axes>
すごいですね。すぐに戻ってきました。せっかくなので8量子ビット使ってみたいと思います。GHZで8量子ビットやってみます。
Copy circuit = Circuit().h(0).cnot(0,1).cnot(1,2).cnot(2,3).cnot(3,4).cnot(4,5).cnot(5,6).cnot(6,7) task = device.run(circuit, shots=100) #計算結果の表示 counts = task.result().measurement_counts print(counts) #そのまま描画 plt.bar(counts.keys(), counts.values());
Counter({'00010011': 3, '01101100': 3, '00011100': 2, '00100111': 2, '00101100': 2, '00110000': 2, '00110110': 2, '00111010': 2, '01001011': 2, '01010100': 2, '01011000': 2, '01011010': 2, '01101010': 2, '01111000': 2, '10000100': 2, '10000101': 2, '11000011': 2, '11010000': 2, '11010110': 2, '11010111': 2, '11011100': 2, '11110110': 2, '11110111': 2, '11111010': 2, '00001100': 1, '00010100': 1, '00010101': 1, '00011010': 1, '00011110': 1, '00011111': 1, '00110011': 1, '00110100': 1, '00111110': 1, '01000000': 1, '01000011': 1, '01000100': 1, '01010000': 1, '01011011': 1, '01100010': 1, '01100110': 1, '01101001': 1, '01111011': 1, '01111101': 1, '01111110': 1, '10000110': 1, '10001110': 1, '10001111': 1, '10010001': 1, '10010110': 1, '10011001': 1, '10011011': 1, '10011101': 1, '10011111': 1, '10100101': 1, '10101100': 1, '10110000': 1, '10110001': 1, '10110010': 1, '10111010': 1, '10111101': 1, '11000010': 1, '11000100': 1, '11000110': 1, '11000111': 1, '11001010': 1, '11001111': 1, '11010101': 1, '11011001': 1, '11011010': 1, '11011101': 1, '11101111': 1, '11111000': 1, '11111001': 1, '11111011': 1})
<Figure size 432x288 with 1 Axes>
さすがに全部のGHZはきつかったですが、全体的には普通に使えましたし、思ってたよりも結構しっかりしてましたね。
© 2024, blueqat Inc. All rights reserved