はじめに
本記事は 3-2. QiskitとIBM Q Experienceの使い方 — Quantum Native Dojo ドキュメント に従い,ローカル環境から IBM Qiskit を実行します
実行環境
Python 3.9.13 64 bit
API token の取得
IBM Quantum の Dashboard 上部で API token を生成・コピーすることができます(画像右下)
パッケージのインストール
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))
量子回路(実機)の実行テスト
実機はシミュレータと異なり,結果を得るのに非常に時間がかかるので注意が必要です
私の環境では完了まで30秒ほどかかりました
backend_sim = backend_lb
result = execute(qc, backend_sim, shots=4096).result()
print(result.get_counts(qc))
plot_histogram(result.get_counts(qc))
参考