LoginSignup
3
4

Qiskit 1.0.0の量子プログラミング(シミュレータ編)

Last updated at Posted at 2024-04-21

Qiskit 1.0.0の量子(シミュレータ)プログラミング

Qiskit1.0.0 のリリースによりqiskitモジュールから “IBMQ” “execute” ”Aer”といった旧版でよく使っていた属性が削除されてしまいました。※Qiskit 1.0.0 Release note
それにより、量子プログラミング方法について書籍に記載されているものが通用しなくなったりと(自分的には)大きく変わったと感じています。
例えば、シミュレータの設定(旧版ではAerを利用)やproviderの設定方法(旧版ではIBMQを利用)や回路の実行方法(旧版ではexecuteを利用)です。
そこで今回「Migrate from qiskit_ibm_privider」を参照し、改めて上記属性やオブジェクトの使い方を見直しました。その内容をここに記載致します。

シミュレータを使っていて私が感じた旧版Qiskitと新版Qiskit間の違い。

旧版Qiskit

1   シミュレータを準備する際に、シミュレータオブジェクト(Aer)からバックエンドオブジェクトを得る
2   構築回路の実行時、実行関数(execute)にバックエンドオブジェクトを伝える

新版Qiskitでは

1'   qiskit_ibm_providerオブジェクトからシミュレータを指定してproviderオブジェクトを得て、このproviderオブジェクトからバックエンド情報を得る
2'   バックエンドオブジェクトを使ってシミュレータにを動かす。

コード例

# 宣言
from qiskit_ibm_provider import IBMProvider
from qiskit import QuantumCircuit、 transpile
from qiskit.visualization import plot_histogram

# 回路形成
circuit = QuantumCircuit(2, 2)
circuit.h(0)
circuit.cx(0, 1)
circuit.measure_all()
circuit.draw('mpl')

# 実行マシン構築(今回はシミュレータ)
provider = IBMProvider()
backend = provider.get_backend("ibmq_qasm_simulator")

# 回路実行
transpiled_circuit = transpile(circuit, backend=backend)
job = backend.run(transpiled_circuit)
print(f" > Counts: {job.result().get_counts()}")
plot_histogram(job.result().get_counts())

実行例

image.png

参照

Qiskit 1.0.0 Release note
Migrate from qiskit_ibm_privider

3
4
2

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
3
4