Google colabで実行.GPUもGoogle colabで使えるものを使用.
install
!pip install qiskit
!pip install qiskit-aer-gpu
import とversion確認
import qiskit
from qiskit import *
qiskit.__version__
#0.16.0
qiskit.__qiskit_version__
#{'qiskit': '0.23.0',
# 'qiskit-aer': '0.7.0',
# 'qiskit-aqua': '0.8.0',
# 'qiskit-ibmq-provider': '0.11.0',
# 'qiskit-ignis': '0.5.0',
# 'qiskit-terra': '0.16.0'}
好きな回路を作る
n_qubit = 12
circ = QuantumCircuit(n_qubit)
for i_qubit in range(n_qubit):
circ.ry(np.pi/8, i_qubit)
circ.rz(np.pi/8, i_qubit)
circ.ry(np.pi/8, i_qubit)
circ.rz(np.pi/8, i_qubit)
if i_qubit <= n_qubit-2:
circ.cx(i_qubit, i_qubit+1)
シミュレータの設定,ここでGPUも指定する
%%time
from qiskit import Aer
backend = Aer.get_backend('statevector_simulator')
#GPUありの時
backend_options = {"method": "statevector_gpu"}
#GPUなしの時
# backend_options = {"method": "statevector"}
job = execute(circ, backend, backend_options=backend_options)
result = job.result()
outputstate = result.get_statevector(circ, decimals=3)
時間計測の結果
- GPUなし:
CPU times: user 10.4 ms, sys: 0 ns, total: 10.4 ms Wall time: 10.2 ms
- GPUあり:
CPU times: user 9.84 ms, sys: 944 µs, total: 10.8 ms Wall time: 10.7 ms
あまり結果に差がない.回路が単純すぎで並列化の利点を生かせていない?
n_qubit
12 → 24に変更
- GPUなし:
CPU times: user 1.52 s, sys: 48.3 ms, total: 1.57 s Wall time: 797 ms
- GPUあり:
CPU times: user 131 ms, sys: 14.9 ms, total: 146 ms Wall time: 146 ms
GPUの効果が見られた.
注意: backend_options
なんかもうすぐ使えなくなるらしい.どう変更すればいいのか教えてください.
追記:
変更方法が見つかったので,載せておきます.
https://zenn.dev/nucl_quantum/articles/5312ddd558793572919c