# Versionの確認
import qiskit
print(f"qiskit=={qiskit.__version__}")
import qiskit_ibm_runtime
print(f"qiskit-ibm-runtime=={qiskit_ibm_runtime.__version__}")
qiskit==1.3.2
qiskit-ibm-runtime==0.34.0
IBM Quantumにアカウントを作成後,https://quantum.ibm.com/account にアクセスしてAPIトークンを取得し,以下のYOUR_API_TOKENに入力する.
✳︎IBM Qunanumのアカウント作成方法は省略します.
from qiskit_ibm_runtime import QiskitRuntimeService
QiskitRuntimeService.save_account(
token="YOUR_API_TOKEN",
channel="ibm_quantum",
overwrite=True
)
上記コードを実行すると,(Macの場合).qiskit/qiskit-ibm.json
にアカウント情報が保存され,次からはAPIトークンを指定せずにQiskitRuntimeServiceを使用できるようになる.
{
"default-ibm-quantum": {
"channel": "ibm_quantum",
"private_endpoint": false,
"token": "YOUR_API_TOKEN",
"url": "https://auth.quantum-computing.ibm.com/api"
}
}%
Bell状態を作る量子回路を実機実行してみる.
from qiskit import QuantumCircuit
from qiskit.visualization import plot_histogram
from qiskit_ibm_runtime import QiskitRuntimeService
from qiskit_ibm_runtime import SamplerV2 as Sampler
from qiskit.transpiler.preset_passmanagers import generate_preset_pass_manager
# IBM Quantum に接続
service = QiskitRuntimeService()
#一番空いているバックエンドを取得する.
backend = service.least_busy(operational=True)
print(f"The least busy device is {backend.name}")
# 量子回路を作成
qc = QuantumCircuit(2, 2)
qc.h(0)
qc.cx(0, 1)
qc.measure([0, 1], [0, 1])
# コンパイル(最適化)
# バックエンドに合わせてトランスパイル
pm = generate_preset_pass_manager(backend=backend, optimization_level=3)
isa_qc = pm.run(qc)
isa_qc.draw("mpl", idle_wires=False)
The least busy device is ibm_kyiv
# Samplerを使用してジョブを実行
sampler = Sampler(mode=backend)
job = sampler.run([isa_qc], shots=10000)
print("job id:", job.job_id())
job id: cyge3bn7v8tg008xa2t0
# ジョブの実行状態を確認
job.status()
'DONE'
# job.status() が 'DONE' になったら
result = job.result()
# 測定された回数を表示
counts = result[0].data.c.get_counts()
print(counts)
# ヒストグラムで測定された確率をプロット
plot_histogram(counts)
{'11': 4850, '00': 5030, '10': 57, '01': 63}
# 待ち時間が長い時に後から結果を確認する場合
from qiskit_ibm_runtime import QiskitRuntimeService
service = QiskitRuntimeService()
job = service.job('JOB_ID') # 実機実行したjobIDを入力する
job.status()
Leave a Reply