2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ローカル環境から IBM Qiskit(量子コンピュータ)を実行してみた

Posted at

はじめに

本記事は 3-2. QiskitとIBM Q Experienceの使い方 — Quantum Native Dojo ドキュメント に従い,ローカル環境から IBM Qiskit を実行します

実行環境

Python 3.9.13 64 bit

API token の取得

IBM Quantum の Dashboard 上部で API token を生成・コピーすることができます(画像右下)
image.png

パッケージのインストール

Qiskit パッケージを pip でインストールすれば完了です

pip install qiskit

アカウントの認証

API token を複数持っている場合は,save_account メソッドで複数のアカウントを保存することが可能です

from qiskit import IBMQ
IBMQ.save_account('YOUR_API_TOKEN')

アカウントの読込・使用可能なバックエンドの確認

API token を複数持っている場合は,load_acccount メソッドの引数によって複数のアカウントを使い分けることが可能です

provider = IBMQ.load_account()
provider.backends()
'''
[<IBMQSimulator('ibmq_qasm_simulator') from IBMQ(hub='ibm-q', group='open', project='main')>,
 <IBMQBackend('ibmq_lima') from IBMQ(hub='ibm-q', group='open', project='main')>,
 <IBMQBackend('ibmq_belem') from IBMQ(hub='ibm-q', group='open', project='main')>,
 <IBMQBackend('ibmq_quito') from IBMQ(hub='ibm-q', group='open', project='main')>,
 <IBMQSimulator('simulator_statevector') from IBMQ(hub='ibm-q', group='open', project='main')>,
 <IBMQSimulator('simulator_mps') from IBMQ(hub='ibm-q', group='open', project='main')>,
 <IBMQSimulator('simulator_extended_stabilizer') from IBMQ(hub='ibm-q', group='open', project='main')>,
 <IBMQSimulator('simulator_stabilizer') from IBMQ(hub='ibm-q', group='open', project='main')>,
 <IBMQBackend('ibmq_manila') from IBMQ(hub='ibm-q', group='open', project='main')>,
 <IBMQBackend('ibm_nairobi') from IBMQ(hub='ibm-q', group='open', project='main')>,
 <IBMQBackend('ibm_oslo') from IBMQ(hub='ibm-q', group='open', project='main')>]
'''

ジョブを投げやすい実機の確認

from qiskit.providers.ibmq import least_busy
backend_lb = least_busy(provider.backends(simulator=False, operational=True))
print("Least busy backend: ", backend_lb)
# Least busy backend:  ibm_oslo

量子回路シミュレータの実行テスト

私の環境では完了まで 0.2 秒ほどかかりました

q = QuantumRegister(2)
c = ClassicalRegister(2)
qc = QuantumCircuit(q, c)
qc.h(q[0])
qc.cx(q[0],q[1])
qc.measure(q[0], c[0])
qc.measure(q[1], c[1])
backend_sim = Aer.get_backend("qasm_simulator")
result = execute(qc, backend_sim, shots=4096).result()
print(result.get_counts(qc))
plot_histogram(result.get_counts(qc))

▼ 量子回路シミュレータの実行結果
image.png

量子回路(実機)の実行テスト

実機はシミュレータと異なり,結果を得るのに非常に時間がかかるので注意が必要です
私の環境では完了まで30秒ほどかかりました

backend_sim = backend_lb
result = execute(qc, backend_sim, shots=4096).result()
print(result.get_counts(qc))
plot_histogram(result.get_counts(qc))

▼ 量子回路の実行結果
image.png

参考

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?