LoginSignup
2
1

More than 3 years have passed since last update.

QiskitのシミュレータでGPUを使ってみる.

Last updated at Posted at 2020-10-24

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

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1