ジョブの実行
このチュートリアルでは、プログラムを使用して IBM 量子コンピューター上でジョブを実行し、ジョブ状況を返す手順について説明します。
新しい IBM Quantum Platform インターフェースがアーリーアクセスモードでリリースされました。 IBM Quantum サービスをご利用になるには、そのインターフェースのご利用を開始されることをお勧めいたします。 IBM Cloud を基盤としているため、移行は簡単です。 詳細は 移行ガイドをご覧ください。
開始前に
プログラムに送信するには回線が必要です。 Qiskitを使用して回路を作成する方法については、量子回路と演算子へのマップ問題ガイドを参照してください
ジョブを実行する
使用するQiskit RuntimeQiskitRuntimeService.run() メソッドは次のパラメータを取ります。
- program_id: 実行するプログラムの ID。
- 入力: プログラム入力パラメーター。 これらの入力値はランタイム・プログラムに渡され、プログラムに定義されているパラメーターによって異なります。
- options: ランタイム・オプション。 これらのオプションは、実行環境を制御します。 現在、使用可能なオプションは backend_name のみです。これはオプションです。
- result_decoder: ジョブ結果をデコードするために使用されるオプションのクラス。
以下の例では、サーキットをサンプラー・プログラムに送信します。
from qiskit_ibm_runtime import QiskitRuntimeService, SamplerV2 as Sampler
from qiskit import QuantumCircuit
service = QiskitRuntimeService()
bell = QuantumCircuit(2)
bell.h(0)
bell.cx(0, 1)
bell.measure_all()
# Execute the Bell circuit
backend = service.backend("ibmq_qasm_simulator")
sampler = Sampler(backend=backend)
job = sampler.run([(bell,)])
result = job.result()
pub_result = result[0]
# Get counts from the classical register "meas".
print(f" >> Counts for the meas output register: {pub_result.data.meas.get_counts()}")
あるいは、 ジョブ API の実行を使用することもできます。オプションで、 Swaggerを使用することもできます。 実行するプログラム ID とバックエンドを指定する必要があり、オプションでパラメーターを指定できます。 返されたジョブ ID をメモします。 この情報は、状況を確認して結果を表示するために必要です。
公平性を確保するために、各 Qiskit Runtime ・ジョブの最大実行時間が存在します。 ジョブがこの時間制限を超えると、強制的に終了されます。 最大実行時間は、1) QPU制限と2)max_execution_time
プログラムによって定義されます。 実行時間制限は、シミュレーター ジョブの場合は 3 時間、物理 QPU で実行されているジョブの場合は 8 時間です。
上記の例では、1 つの単純なジョブをサブミットしますが、複数のジョブをバッチとしてサブミットすることも、セッションを使用して複数の反復ジョブをサブミットすることもできます。 詳しくは、 実行モード の資料を参照してください。
(オプション) ジョブ状況を戻す
RuntimeJobV2
メソッドを実行して、 Qiskit Runtime QiskitRuntimeService.run()
メソッドをフォローアップします。 run()
メソッドは、プログラムの非同期実行インスタンスを表す RuntimeJob インスタンスを返します。 RuntimeJobV2
クラスは、 BasePrimitiveJob
から継承します。 このクラスの status()
メソッドは、以前に返された JobStatus 列挙型ではなく、ストリングを返します。 詳しくは、 RuntimeJobV2 API リファレンス を参照してください。
job.status()
など、いくつかの RuntimeJob メソッドがあります。
# check the job status
print(f"Job {job.job_id()} status: {job.status()}")
あるいは、 ジョブ詳細のリスト APIを手動で実行するか、 Swagger を使用してジョブの状況を確認します。
次のステップ
- 結果を表示します。
- API リファレンスを参照してください。
- IBM Quantumについて学ぼう: