Skip to main content
IBM Quantum Platform

Qiskit 0.30 リリースノート


0.30.1

Terra 0.18.3

前奏曲

このバグフィックスリリースでは、 0.18 のいくつかのマイナーな問題を修正しています。 assemble の性能リグレッションを含みます。 QuantumCircuit オブジェクトを処理する際の性能の後退を含みます。

バグ修正

  • 実行すると AttributeError が発生する問題を修正した。 ScheduleBlock が発生する問題を修正した。 のように、これらのブロックはパルスジョブとして正しく扱われるようになりました。 Schedule.
  • 複素数パラメータ値を演算子の係数にバインドする際にエラーが発生する問題を修正しました。 の floatPrimitiveOp へのキャストは、必要に応じて complex へのキャストへと一般化されたが、虚数成分がない場合は float のままとなる。 6976を修正。
  • の1qubitゲートエラーを更新し plot_error_map を更新し、 u2 ゲートの代わりに sx ゲートを使うようにする。

エア 0.9.0

変更なし

イグニス 0.6.0

変更なし

アクア 0.9.5

変更なし

IBM Q プロバイダー 0.16.0

変更なし


0.30.0

Terra 0.18.2

変更なし

エア 0.9.0

前奏曲

0.9 リリースには、Dask分散を使用してHPCクラスタ上で大量の回路を並列エクゼキューションするための新しいバックエンドオプションと、その他の一般的なパフォーマンスの向上とバグ修正が含まれています。

新機能

  • set_matrixのサポートを追加した。

  • qiskitライブラリを追加する SXdgGate および CUGate をAerシミュレータバックエンドでサポートされる基底ゲートに追加する。 ゲートは CUGate ゲートがネイティブにサポートされているのは、 statevectorunitary メソッドだけです。 他のシミュレーション手法の場合は、その手法でサポートされている基底ゲートにトランスパイルする必要があります。

  • AerSimulator および QasmSimulator のすべてのシミュレーション手法に、N量子ビット・パウリ・ゲート ( qiskit.circuit.library.generalized_gates.PauliGate) のサポートを追加。

  • HPCクラスタ上で複数の回路を並列実行するために、カスタムエクゼキュータを設定し、ジョブ分割を構成する機能を追加しました。 カスタム・エクゼキューターは executor オプションで設定でき、ジョブ分割は max_job_size オプションで設定する。

    例えば、バックエンドを設定し、以下を使用して実行する

    backend = AerSimulator(max_job_size=1, executor=custom_executor)
    job = backend.run(circuits)

    は、1つの回路を含む複数のジョブに分割する。 ジョブの分割が有効な場合、 run メソッドは、個々の AerJob クラスをすべて含む AerJobSet オブジェクトを返す。 個々のジョブの実行がすべて終了すると、ジョブ結果は自動的に1つのResultオブジェクトにまとめられ、 job.result() によって返されます。

    サポートされるエクゼキュータには、 Python concurrent.futures モジュールに含まれるもの(例: ThreadPoolExecutorProcessPoolExecutor )、およびオプションのdaskライブラリがインストールされている場合は、 Dask 分散クライアントエクゼキュータが含まれます。 Daskエグゼキュータを使用することで、HPCクラスタ上で複数の回路の並列実行を構成することができます。

  • バックエンドオプション mps_log_data=True を設定することで、実験結果のメタデータに matrix_product_state シミュレーションメソッドのロギングデータを記録する機能を追加。 保存されたデータには、結合寸法と、関連するすべての回路命令の後に廃棄された値(近似によって廃棄されたシュミット係数の2乗の合計)が含まれる。

  • AerSimulatorQasmSimulatorStatevectorSimulatorUnitarySimulator のための run() メソッドには、新しいkwarg、 parameter_binds がある。このkwargは、インバウンド回路の未束縛パラメータに使用する値のリストを提供するために使用される。 例:

    from qiskit.circuit import QuantumCircuit, Parameter
    from qiskit.providers.aer import AerSimulator
    
    shots = 1000
    backend = AerSimulator()
    circuit = QuantumCircuit(2)
    theta = Parameter('theta')
    circuit.rx(theta, 0)
    circuit.cx(0, 1)
    circuit.measure_all()
    parameter_binds = [{theta: [0, 3.14, 6.28]}]
    backend.run(circuit, shots=shots, parameter_binds=parameter_binds).result()

    は、θに0、 3.14、 6.28 の値を指定して入力回路を3回実行する。 複数のパラメータで実行する場合、値リストの長さはすべて同じでなければならない。 複数の回路で実行する場合、 parameter_binds の長さは入力回路の数と一致する必要があります(回路にバインドがない場合は、空のdict、 {} を使用できます)。

  • PulseSimulatorQuantumCircuit オブジェクトを run()。 以前は Schedule オブジェクトだけを run() への入力としていた。 回路または回路のリストがシミュレータに渡されると、回路を実行する前に、回路をスケジュールに変換するために schedule() を呼び出して回路をスケジュールに変換してから実行します。 例:

    from qiskit.circuit import QuantumCircuit
    from qiskit.compiler import transpile
    from qiskit.test.mock import FakeVigo
    from qiskit.providers.aer.backends import PulseSimulator
    
    backend = PulseSimulator.from_backend(FakeVigo())
    
    circuit = QuantumCircuit(2)
    circuit.h(0)
    circuit.cx(0, 1)
    circuit.measure_all()
    
    transpiled_circuit = transpile(circuit, backend)
    backend.run(circuit)

既知の問題

  • QasmSimulatorAerSimulator の extended_stabilizer メソッドにおいて、特定のパウリ演算子成分に対して不正な値を返すため、 SaveExpectationValueSaveExpectationValueVariance が無効化されました。 詳しくは#1227 <https://github.com/Qiskit/qiskit-aer/issues/1227> を参照。

アップグレードの注意

  • qiskit-terra の u3 回路メソッドの非推奨と qiskit-ibmq-provider バックエンドの基底ゲートの変更により、 NoiseModel クラスのデフォルト基底が ["id", "u3", "cx"] から ["id", "rz", "sx", "cx"] に変更されました。 古い基底ゲートを使うには、 NoiseModel(basis_gates=["id", "u3", "cx"]) として、カスタム基底ゲートでノイズモデルを初期化することができる。
  • qiskit-aer 0.7 で非推奨となった Aer バックエンドの run メソッドから backend_options kwarg を削除。 すべての実行オプションは別々のkwargsとして渡されなければならなくなった。
  • PulseSimulatorrun メソッドの位置引数として system_model を渡すことを削除。

非推奨のメモ

  • アセンブルしたqobjをAerシミュレータのバックエンドの run() メソッドに直接渡すことは廃止され、トランスパイルサーキットを backend.run(circuits, **run_options) として直接渡すようになりました。
  • qiskit.providers.aer.extensions 、すべてのスナップショット命令は非推奨となった。 交換には、 qiskit.providers.aer.library モジュールの保存手順を使用してください。
  • NoiseModel に非局所量子エラーを追加することは、このノイズが最適化された回路に適用される方法に矛盾があるため、非推奨となっている。 非局所ノイズは、シミュレータで実行する前に、Qiskitでカスタムトランスパイラパスを使用してスケジュールされた回路に手動で追加する必要があります。
  • GPU シミュレーションを実行するための StatevectorSimulator, UnitarySimulatormethod オプションの使用は廃止されました。 互換性のあるシステムでGPUシミュレーションを実行するには、代わりに device='GPU'

バグ修正

  • basis_gates コンフィギュレーション属性の設定方法に関するパフォーマンスの問題を修正。 以前はバックエンドクラスに意図しない副作用があり、シミュレーションの繰り返し実行時間が漸増することがありました。 詳しくは#1229 <https://github.com/Qiskit/qiskit-aer/issues/1229> を参照。
  • MPS::apply_krausのバグを修正した。 関連する量子ビットにクラウス行列を適用した後、隣接する量子ビットに変更を伝播させる必要がある。
  • qiskit-terraがマルチプレクサーゲート内の量子ビットが最初にターゲット、次にゲートのコントロールであると仮定しているのに対し、qiskit-aerが逆の順序を仮定しているバグを修正しました。
  • 0.8.0、GPUシミュレーションでGPUメモリに加えて不要なホスト・メモリが割り当てられるバグが修正されました。
  • initialize命令が最初の回路命令であったり、全ての量子ビットに適用され、決定論的であったとしても、状態ベクトルおよび行列積状態シミュレーション法における測定サンプリング最適化を無効にしてしまうバグを修正。
  • ノルム推定アルゴリズムではなく、計算基底状態との内積を使ってノルムを計算するように問題#1196を修正。
  • QasmSimulatorAerSimulatorstabilizer シミュレーターメソッドにおいて、 save_expectation_valuesnapshot_expectation_value の期待値が特定の Y パウリに対して誤った符号を持つ可能性があるバグを修正。
  • 必要なメモリがシステムメモリより小さい場合、マルチチャンクシミュレーションが有効になってもシミュレーションが開始される不具合を修正しました。 この場合、メモリ不足例外がスローされる。
  • set_options(shots=k) を持つバックエンドに shots オプションを設定すると、常に指定された値ではなくデフォルトのショット数(1024)が実行される問題を修正。
  • AerSimulatormax_parallel_experiments=1 のオプション値を処理する方法のバグを修正。 これまでは max_parallel_experiments=0 と同じ扱いだった。
  • extended_stabilizer シミュレーションメソッドにおいて、qelayゲートとマルチ量子ビットのパウリ命令がサポートされていないものとして誤って扱われていたバグを修正。
  • AerSimulatorQasmSimulatorextended_stabilizer_norm_estimation_repetitions オプションのタイプミスを修正。
  • matrix_product_state シミュレーションメソッドで unitary ゲートを適用する際に、ゲートが適用される量子ビットの順序の並べ替えを正しくサポートしていなかったバグを修正。
  • ゲート・フュージョンがサポートされていないにもかかわらず、 matrix_product_state シミュレーション・メソッドでゲート・フュージョンが有効になってしまう問題を修正しました。 この方法では、フュージョンは常に無効になっている。
  • matrix_product_state 、SVDを実行した後にシュミット係数を切り捨て、正規化を計算する際のシミュレーション方法のバグを修正。

その他の注意事項

  • matrix_product_state シミュレーション法の測定サンプリングアルゴリズムの性能を向上。 新しいデフォルトの動作は、常に改良された mps_apply_measure メソッドを使ってサンプリングする。 カスタム・オプション値 mps_sample_measure_algorithm="mps_probabilities" を設定することで、 mps_probabilities サンプリング方法を使用することができます。

イグニス 0.6.0

変更なし

アクア 0.9.5

変更なし

IBM Q プロバイダー 0.16.0

変更なし

このページは役に立ちましたか?
バグや誤字の報告、またはコンテンツの要求はGitHubで行ってください。