Skip to main content
IBM Quantum Platform

Qiskit 0.15 リリースノート


0.15.0

Terra 0.12.0

前奏曲

0.12.0 リリースにはいくつかの新機能とバグ修正が含まれている。 今回のリリースの最大の変更点は、パラメトリック・パルスのサポートが OpenPulse に追加されたことだ。 これらはパルス・コマンドで、パルスを記述するためにサンプル・ポイントではなくパラメータを取る。 0.12.0 Python 3.8 をサポートする最初のリリースでもある。 また、 Python 3.5 サポートの非推奨化の始まりでもある。アップストリームコミュニティがサポートを停止した時点で削除される。

新機能

  • パス qiskit.transpiler.passes.CSPLayout には2つの新しいパラメーターが追加された: call_limittime_limit。 これらのオプションにより、パスの実行時間を制限することができる。 call_limit オプションは、バックトラック・ソルバーの再帰関数を呼び出す回数を制限する。 同様に、 time_limit 、ソルバーの実行時間(秒)を制限する。 デフォルトはそれぞれ 1000 コールと 10 秒。

  • qiskit.pulse.Acquire が単一の量子ビットに適用できるようになった。 これにより、すべての操作が単一のチャンネルに適用されるため、パルス・プログラミングの一貫性が増し、理屈が簡単になる。 例:

    acquire = Acquire(duration=10)
    schedule = Schedule()
    schedule.insert(60, acquire(AcquireChannel(0), MemorySlot(0), RegisterSlot(0)))
    schedule.insert(60, acquire(AcquireChannel(1), MemorySlot(1), RegisterSlot(1)))
  • 新しいメソッド qiskit.transpiler.CouplingMap.draw() が追加された。 qiskit.transpiler.CouplingMap に新しいメソッドが追加された。 例:

    from qiskit.transpiler import CouplingMap
    
    coupling_map = CouplingMap(
        [[0, 1], [1, 0], [1, 2], [1, 3], [2, 1], [3, 1], [3, 4], [4, 3]])
    coupling_map.draw()
  • OpenPulse にパラメトリック・パルスが追加された。 これらはバックエンドによってパラメータ化され、理解されるパルスコマンドである。 任意のパルス形状は、 SamplePulse コマンドでもサポートされている。 新たにサポートされたパルスクラスは以下の通り:

    • qiskit.pulse.ConstantPulse
    • qiskit.pulse.Drag
    • qiskit.pulse.Gaussian
    • qiskit.pulse.GaussianSquare

    他のパルスコマンドと同様に使用できる。 以下に例を示します:

    from qiskit.pulse import (Schedule, Gaussian, Drag, ConstantPulse,
                              GaussianSquare)
    
    sched = Schedule(name='parametric_demo')
    sched += Gaussian(duration=25, sigma=4, amp=0.5j)(DriveChannel(0))
    sched += Drag(duration=25, amp=0.1, sigma=5, beta=4)(DriveChannel(1))
    sched += ConstantPulse(duration=25, amp=0.3+0.1j)(DriveChannel(1))
    sched += GaussianSquare(duration=1500, amp=0.2, sigma=8,
                            width=140)(MeasureChannel(0)) << sched.duration

    出来上がったスケジュールは、 qiskit.pulse.pulse_lib を使って構築された SamplePulse スケジュールに似ているが、波形のサンプリングはバックエンドによって実行される。 この方法は qiskit.pulse.Schedule.draw() は通常通り使用できる。 しかし、コマンドは qiskit.pulse.ParametricPulse.get_sample_pulse() メソッドで SamplePulse に変換されるため、表示されるパルスはバックエンドがサンプリングするのと同じように連続関数をサンプリングしない可能性がある。

    この機能を使えば、どのバックエンドでもパルス・プログラムを作成できるが、バックエンドがパラメトリック・パルスをサポートしていない場合、パルスは SamplePulse オブジェクトに変換される。 これらをサポートするバックエンドは、以下の新しい属性を持つことになる:

    backend.configuration().parametric_pulses: List[str]
    # e.g. ['gaussian', 'drag', 'constant']

    バックエンドはQiskitで定義されたパラメトリックパルスをすべてサポートする必要はないことに注意してください。

    バックエンドがパラメトリックパルスをサポートし、パルススケジュールがそれらでビルドされる場合、アセンブルされるQobjはかなり小さくなる。 パラメトリック・パルスのみで構築された PulseQobj のサイズは、命令数にのみ依存する。一方、それ以外の方法で構築された PulseQobj のサイズは、(すべてのサンプルに値を指定しなければならないため)命令時間と共に大きくなる。

  • qiskit.scheduler モジュールにユーティリティ関数 qiskit.scheduler.measure()qiskit.scheduler.measure_all() を追加。 これらの関数は qiskit.pulse.ScheduleOpenPulse オブジェクトを返します。 例:

    from qiskit.scheduler import measure, measure_all
    
    measure_q0_schedule = measure(qubits=[0], backend=backend)
    measure_all_schedule = measure_all(backend)
    measure_custom_schedule = measure(qubits=[0],
                                      inst_map=backend.defaults().instruction_schedule_map,
                                      meas_map=[[0]],
                                      qubit_mem_slots={0: 1})
  • パルス qiskit.pulse.Schedule オブジェクトの表現が改善され、単純なスケジュールであれば、 Python 式が有効になるはずだ。

  • その qiskit.circuit.QuantumCircuit メソッド qiskit.circuit.QuantumCircuit.measure_active(), qiskit.circuit.QuantumCircuit.measure_all()そして qiskit.circuit.QuantumCircuit.remove_final_measurements() は、 inplaceinplaceFalse に設定すると、この関数は回路の修正コピーを返す。 これは、回路オブジェクトをインプレースで変更し、何も返さないデフォルトの動作とは異なる。

  • いくつかの新しいコンストラクタ・メソッドが qiskit.transpiler.CouplingMap クラスにいくつかの新しいコンストラクタ・メソッドが追加されました。 新しいコンストラクタのメソッドは以下の通り:

    例えば、新しいコンストラクタを使って、5個の量子ビットを線形に連結したカップリング・マップを得るには、次のようにします:

    from qiskit.transpiler import CouplingMap
    
    coupling_map = CouplingMap.from_line(5)
    coupling_map.draw()
  • 新しいパスを導入 qiskit.transpiler.passes.CrosstalkAdaptiveSchedule. このパスは、クロストーク・ノイズが番組に与える影響を軽減することを目的としている。 これは、バックエンドからのクロストーク特性データを使用してゲートをスケジューリングする。 ゲートのペアが高いクロストークを持つ場合、バリアを使って直列化される。 ナイーブな直列化は、デコヒーレンス・エラーを引き起こすので有害である。 したがって、このパスでは、クロストークとデコヒーレンス・エラーの影響を最小化するスケジュールを計算するために、SMT最適化アプローチを使用する。

    つまり、回路は物理量子ビットで表現され、スワップゲートが挿入され、必要に応じてCNOTに分解されている。 この回路とクロストーク特性データを用いて、 Z3 最適化を行い、出力として新しい予定回路を構築する。

    サーキット・サーキットでパスを使用する:

    dag = circuit_to_dag(circ)
    pass_ = CrosstalkAdaptiveSchedule(backend_prop, crosstalk_prop)
    scheduled_dag = pass_.run(dag)
    scheduled_circ = dag_to_circuit(scheduled_dag)

    backend_propqiskit.providers.models.BackendProperties オブジェクトです。 crosstalk_prop は条件付きエラーレートを指定するディクトである。 2つのゲート g1g2crosstalk_prop[g1][g2] は、 g1g2 が同時に実行されたときの g1 の条件付きエラー率を指定する。 crosstalk_prop を生成する方法は、qiskit-ignisの将来のリリースで追加される予定です。 それまでは、自分のデバイスのクロストーク特性をすでに知っているか、手作業でデバイスの特性評価実験を書かなければならない。

  • 最適化レベル1のプリセット・パス・マネージャーで qiskit.transpiler.preset_passmanagers.level_1_pass_manager() もし qiskit.transpiler.passes.TrivialLayout レイアウトパスが特定の回路に完全にマッチしない場合、代わりに qiskit.transpiler.passes.DenseLayout を代わりに使用します。

  • 新しい抽象メソッド qiskit.quantum_info.Operator.dot()BaseOperator を含む、その抽象クラスのすべての実装に含まれる。 qiskit.quantum_info.Operator および QuantumChannel (例、 qiskit.quantum_info.Choi) オブジェクトに含まれるようになりました。 このメソッドは、右演算子乗算 a.dot(b) =ab= a \cdot b を返す。これは演算子 qiskit.quantum_info.Operator.compose()front Trueメソッドを呼び出すのと同じです。

  • 追加 qiskit.quantum_info.average_gate_fidelity()qiskit.quantum_info.gate_error() 関数を qiskit.quantum_info モジュールが追加された。 qiskit.quantum_info.OperatorQuantumChannel (例えば qiskit.quantum_info.Choi)オブジェクトを扱えるようにした。

  • を追加した。 qiskit.quantum_info.partial_trace() 関数を qiskit.quantum_info で動作する qiskit.quantum_info.Statevectorqiskit.quantum_info.DensityMatrix 量子状態クラス 例:

    from qiskit.quantum_info.states import Statevector
    from qiskit.quantum_info.states import DensityMatrix
    from qiskit.quantum_info.states import partial_trace
    
    psi = Statevector.from_label('10+')
    partial_trace(psi, [0, 1])
    rho = DensityMatrix.from_label('10+')
    partial_trace(rho, [0, 1])
  • いつ qiskit.circuit.QuantumCircuit.draw() または qiskit.visualization.circuit_drawer()with_layout kwargをTrue(デフォルト)に設定して呼び出された場合、出力の可視化は物理量子ビットを整数として表示し、仮想量子ビットと明確に区別するようになります。

    例:

    from qiskit import QuantumCircuit
    from qiskit import transpile
    from qiskit.test.mock import FakeVigo
    
    qc = QuantumCircuit(3)
    qc.h(0)
    qc.cx(0, 1)
    qc.cx(0, 2)
    transpiled_qc = transpile(qc, FakeVigo())
    transpiled_qc.draw(output='mpl')
  • 新しい状態測定関数を qiskit.quantum_info モジュールに追加した: qiskit.quantum_info.entropy(), qiskit.quantum_info.mutual_information(), qiskit.quantum_info.concurrence()そして qiskit.quantum_info.entanglement_of_formation(). これらの関数は qiskit.quantum_info.Statevector クラスと qiskit.quantum_info.DensityMatrix クラスで動作します。

  • の単一量子ビットゲートの分解法は、Z,X,Z軸の3回転を特徴とする の基底も含むように拡張された。 qiskit.quantum_info.synthesis.one_qubit_decompose.OneQubitEulerDecomposer の単一量子ビットゲートの分解法が拡張され、Z,X,Z軸の3回転を特徴とする 'ZXZ' 基底も含まれるようになった。 このことは、一般的な 2x2 演算子は以下のベースに分解できることを意味する: U3 U1X, ZYZ, ZXZ, XYX, ZXZ.

既知の問題

  • を使用する関数を実行する。 qiskit.tools.parallel_map() (例えば qiskit.execute.execute()qiskit.compiler.transpile()および qiskit.transpiler.PassManager.run()Python 3.8 MacOS を使用した関数の実行は、 if __name__ == '__main__': ブロックの外側で実行されているスクリプトから呼び出された場合、動作しないことがあります。 その他の環境ではこの問題は発生しない。 これは、 MacOS の Python 3.8 による並列プロセスの起動方法が変更されたためである。 parallel_map() を直接呼び出しているスクリプトや、 Python 3.8 MacOS で内部的に使用している関数を呼び出すときに RuntimeErrorAttributeError が発生する場合は、スクリプトの呼び出しを if __name__ == '__main__': 内に埋め込むことで、問題を回避できるはずです。 例:

    from qiskit import QuantumCircuit, QiskitError
    from qiskit import execute, BasicAer
    
    qc1 = QuantumCircuit(2, 2)
    qc1.h(0)
    qc1.cx(0, 1)
    qc1.measure([0,1], [0,1])
    # making another circuit: superpositions
    qc2 = QuantumCircuit(2, 2)
    qc2.h([0,1])
    qc2.measure([0,1], [0,1])
    execute([qc1, qc2], BasicAer.get_backend('qasm_simulator'))

    この照会は、次のように変更する必要があります。

    from qiskit import QuantumCircuit, QiskitError
    from qiskit import execute, BasicAer
    
    def main():
        qc1 = QuantumCircuit(2, 2)
        qc1.h(0)
        qc1.cx(0, 1)
        qc1.measure([0,1], [0,1])
        # making another circuit: superpositions
        qc2 = QuantumCircuit(2, 2)
        qc2.h([0,1])
        qc2.measure([0,1], [0,1])
        execute([qc1, qc2], BasicAer.get_backend('qasm_simulator'))
    
    if __name__ == '__main__':
        main()

    Python 3.8 MacOS でエラーが発生した場合。

アップグレードの注意

  • Pulseバックエンドの設定オブジェクトの rep_time パラメータの値が、マイクロ秒ではなく秒単位になりました。 PulseBackendConfiguration オブジェクトが最初に初期化されたとき、そのことを示す警告がユーザーに発せられる。

  • の引数 rep_timeqiskit.compiler.assemble() の引数は、マイクロ秒単位ではなく秒単位になった。 これは、他のすべてをパルスにしたユニットを作るために行われた。 rep_time に値を渡していた場合は、この変更を考慮して値を更新してください。

  • オブジェクトの base_gate プロパティの値が qiskit.circuit.ControlledGate オブジェクトのプロパティの値が、ベース・ゲートのクラスからベース・ゲートのクラスのインスタンスに変更されました。

  • base_gate_name プロパティは削除された。 qiskit.circuit.ControlledGate オブジェクトの base_gate.name にアクセスすることで、ベースゲートの名前を得ることができます。 例:

    from qiskit import QuantumCircuit
    from qiskit.extensions import HGate
    
    qc = QuantumCircuit(3)
    cch_gate = HGate().control(2)
    base_gate_name = cch_gate.base_gate.name
  • 変更点 qiskit.quantum_info.Operator マジックメソッドを変更し、 __mul__ (これは python の乗算演算で実行されます。演算の左手が定義されている場合) が右行列の乗算 (つまり qiskit.quantum_info.Operator.dot()), と __rmul__ (左側に __mul__ が定義されていない場合、pythonの乗算演算によって右側から実行される)はスカラー倍算を実装している(つまり qiskit.quantum_info.Operator.multiply() )。 以前はどちらの方法もスカラー倍算を実装していた。

  • 関数の第2引数 qiskit.quantum_info.process_fidelity() 関数の第2引数、 target はオプションになった。 ターゲット・ユニタリーが指定されない場合は、入力チャネルのプロセス・フィデリティが、 アイデンティティ演算子とともに返される。

  • qiskit.compiler.assemble() はバックエンドに設定された max_shots の値を尊重するようになりました。 shots kwargにバックエンドの設定で設定された最大ショットを超える値が指定された場合、この関数は QiskitError 例外が発生するようになりました。 さらに、shots引数が与えられない場合、デフォルト値は1024(以前の動作)またはバックエンドからの max_shots 、いずれか低い方となる。

非推奨のメモ

  • にゲートを追加するメソッドは、キーワード引数が省略されている。 qiskit.circuit.QuantumCircuit にゲートを追加するメソッドで、キーワード引数が省略されたもの(例: ctltgt )は、キーワード引数の名前が変更され、よりわかりやすくなりました(例: control_qubittarget_qubit )。古い名前は廃止されました。 QuantumCircuit メソッドの新旧呼び出しシグネチャを含む表を以下に示す。

    指示タイプ
    旧署名
    新しい署名
    qiskit.extensions.HGateqc.h(q)qc.h(qubit)
    qiskit.extensions.CHGateqc.ch(ctl, tgt)qc.ch((control_qubit, target_qubit))
    qiskit.extensions.IdGateqc.iden(q)qc.iden(qubit)
    qiskit.extensions.RGateqc.iden(q)qc.iden(qubit)
    qiskit.extensions.RGateqc.r(theta, phi, q)qc.r(theta, phi, qubit)
    qiskit.extensions.RXGateqc.rx(theta, q)qc.rx(theta, qubit)
    qiskit.extensions.CrxGateqc.crx(theta, ctl, tgt)qc.crx(theta, control_qubit, target_qubit)
    qiskit.extensions.RYGateqc.ry(theta, q)qc.ry(theta, qubit)
    qiskit.extensions.CryGateqc.cry(theta, ctl, tgt)qc.cry(theta, control_qubit, target_qubit)
    qiskit.extensions.RZGateqc.rz(phi, q)qc.rz(phi, qubit)
    qiskit.extensions.CrzGateqc.crz(theta, ctl, tgt)qc.crz(theta, control_qubit, target_qubit)
    qiskit.extensions.SGateqc.s(q)qc.s(qubit)
    qiskit.extensions.SdgGateqc.sdg(q)qc.sdg(qubit)
    qiskit.extensions.FredkinGateqc.cswap(ctl, tgt1, tgt2)qc.cswap(control_qubit, target_qubit1, target_qubit2)
    qiskit.extensions.TGateqc.t(q)qc.t(qubit)
    qiskit.extensions.TdgGateqc.tdg(q)qc.tdg(qubit)
    qiskit.extensions.U1Gateqc.u1(theta, q)qc.u1(theta, qubit)
    qiskit.extensions.Cu1Gateqc.cu1(theta, ctl, tgt)qc.cu1(theta, control_qubit, target_qubit)
    qiskit.extensions.U2Gateqc.u2(phi, lam, q)qc.u2(phi, lam, qubit)
    qiskit.extensions.U3Gateqc.u3(theta, phi, lam, q)qc.u3(theta, phi, lam, qubit)
    qiskit.extensions.Cu3Gateqc.cu3(theta, phi, lam, ctl, tgt)qc.cu3(theta, phi, lam, control_qubit, target_qubit)
    qiskit.extensions.XGateqc.x(q)qc.x(qubit)
    qiskit.extensions.CnotGateqc.cx(ctl, tgt)qc.cx(control_qubit, target_qubit)
    qiskit.extensions.ToffoliGateqc.ccx(ctl1, ctl2, tgt)qc.ccx(control_qubit1, control_qubit2, target_qubit)
    qiskit.extensions.YGateqc.y(q)qc.y(qubit)
    qiskit.extensions.CyGateqc.cy(ctl, tgt)qc.cy(control_qubit, target_qubit)
    qiskit.extensions.ZGateqc.z(q)qc.z(qubit)
    qiskit.extensions.CzGateqc.cz(ctl, tgt)qc.cz(control_qubit, target_qubit)
  • 複数の量子ビットで qiskit.pulse.Acquire を実行することは非推奨であり、将来のリリースで削除される予定です。 さらに、 qiskit.pulse.AcquireInstruction のパラメータ mem_slotsreg_slots は廃止された。 代わりに reg_slotmem_slot

  • の属性は廃止されました。 qiskit.providers.models.PulseDefaults クラス circuit_instruction_map の属性は非推奨となり、将来のリリースでは削除される予定です。 代わりに、新しい属性 instruction_schedule_map を使用する必要があります。 これは、属性値の型( InstructionScheduleMap )に合わせるためである。

  • qiskit.pulse.PersistentValue コマンドは非推奨であり、将来のリリースで削除される予定である。 同様の機能は、 qiskit.pulse.ConstantPulse コマンド(新しいパラメトリック・パルスのひとつ)でも実現できる。 以下を見比べてほしい:

    from qiskit.pulse import Schedule, PersistentValue, ConstantPulse, \
                             DriveChannel
    
    # deprecated implementation
    sched_w_pv = Schedule()
    sched_w_pv += PersistentValue(value=0.5)(DriveChannel(0))
    sched_w_pv += PersistentValue(value=0)(DriveChannel(0)) << 10
    
    # preferred implementation
    sched_w_const = Schedule()
    sched_w_const += ConstantPulse(duration=10, amp=0.5)(DriveChannel(0))
  • Python 3.5 のサポートは非推奨です。 サポートは、アップストリームの Python コミュニティのバージョン終了日(2020/09/13)後の最初のリリースで削除される。

  • require_cptp kwarg は非推奨。 qiskit.quantum_info.process_fidelity() 関数のkwargは非推奨となり、将来のリリースで削除される予定です。 require_cprequire_tp の2つの独立したkwargsに取って代わられている。

  • scale パラメータを設定する。 qiskit.circuit.QuantumCircuit.draw()qiskit.visualization.circuit_drawer() を最初の位置引数として設定することは非推奨であり、将来のリリースでは削除される予定です。 その代わりに、キーワード引数として scale

  • qiskit.tools.qi.qi モジュールは非推奨であり、将来のリリースで削除される予定である。 モジュール内のレガシー関数は、すべてモジュール内の関数とクラスに取って代わられた。 qiskit.quantum_info モジュールに取って代わられました。 非推奨関数とその代替関数の表は以下の通り:

    非推奨
    置換
    qiskit.tools.partial_trace()qiskit.quantum_info.partial_trace()
    qiskit.tools.choi_to_pauli()qiskit.quantum_info.Choi そして quantum_info.PTM
    qiskit.tools.chop()numpy.round
    qiskit.tools.qi.qi.outernumpy.outer
    qiskit.tools.concurrence()qiskit.quantum_info.concurrence()
    qiskit.tools.shannon_entropy()qiskit.quantum_info.shannon_entropy()
    qiskit.tools.entropy()qiskit.quantum_info.entropy()
    qiskit.tools.mutual_information()qiskit.quantum_info.mutual_information()
    qiskit.tools.entanglement_of_formation()qiskit.quantum_info.entanglement_of_formation()
    qiskit.tools.is_pos_def()quantum_info.operators.predicates.is_positive_semidefinite_matrix
  • qiskit.quantum_info.states.states モジュールは非推奨であり、将来のリリースで削除される予定である。 モジュール内のレガシー関数は、すべてモジュール内の関数とクラスに取って代わられた。 qiskit.quantum_info モジュールに取って代わられました。

    非推奨
    置換
    qiskit.quantum_info.states.states.basis_stateqiskit.quantum_info.Statevector.from_label()
    qiskit.quantum_info.states.states.projectorqiskit.quantum_info.DensityMatrix
  • Schedule および Pulse オブジェクトの draw() メソッドの scaling パラメーターは非推奨となり、将来のリリースで削除される予定です。 代わりに、新しい scale パラメータを使うべきである。 これは、パルス図と回路図に一貫性を持たせるためである。 例:

    #The consistency in parameters is seen below
    #For circuits
    circuit = QuantumCircuit()
    circuit.draw(scale=0.2)
    #For pulses
    pulse = SamplePulse()
    pulse.draw(scale=0.2)
    #For schedules
    schedule = Schedule()
    schedule.draw(scale=0.2)

バグ修正

その他の注意事項

  • ディレクトリのトランスパイラ・パスは、機能別に分類しやすいようにサブディレクトリに整理されました。 qiskit.transpiler.passes ディレクトリのトランスパイラ・パスは、機能別に分類しやすいようにサブディレクトリに整理されています。 これらはまだすべて、 qiskit.transpiler.passes ネームスペースでアクセスできる。

エア 0.4.0

追加

  • IBMQバックエンド用の基本的なデバイスノイズモデルを構築するための NoiseModel.from_backend を追加しました(#569)
  • QasmSimulator, StatevectorSimulator, UnitarySimulator にマルチGPU対応シミュレーションメソッドを追加。 qasm シミュレータには、gpu 版の密度行列法と状態ベクトル法があり、 backend_options"method": "density_matrix_gpu" または "method": "statevector_gpu" を使ってアクセスできます。 ステートベクターシミュレーターgpuメソッドは、 "method": "statevector_gpu" を使用してアクセスできます。 ユニタリーシミュレーターGPUメソッドは、 "method": "unitary_gpu" を使ってアクセスできます。 これらのバックエンドはCUDAを使用し、NVidia GPUを必要とする(#544)
  • PulseSimulator バックエンドを追加 (#542)
  • PulseSimulator (#496、#493)で使用されるモデルを表す PulseSystemModelHamiltonianModel クラスを追加
  • パラメータリストから PulseSystemModel オブジェクトを生成する duffing_model_generators を追加 (#516)
  • ODE関数ソルバーをC++に移行 (#442, #350)
  • 高レベルパルスシミュレータテストを追加 (#379)
  • CMakeのBLAS_LIB_PATHフラグでBLAS libを探すパスを設定 (#543)

変更

  • シミュレータのソースコードを整理するため、 src ディレクトリの構造を変更。 シミュレータコントローラのヘッダは src/controllers 、シミュレータメソッドのStateヘッダは src/simulators (#544) に移動しました
  • いくつかの関数の場所を移動しました(#568):* qiskit.provider.aer.noise.errors の内容を qiskit.providers.noise モジュールに移動しました。 qiskit.provider.aer.noise.utils の内容を qiskit.provider.aer.utils モジュールに移動しました。
  • 回路内の連続するゲートを集約(融合)する最適化をデフォルトで有効にした(#579)。

非推奨

  • 非推奨の utils.qobj_utils 関数 (#568)
  • 非推奨 qiskit.providers.aer.noise.device.basic_device_noise_model. これは NoiseModel.from_backend メソッド (#569) に取って代わられた

削除済み

  • 0.3 (#568) で非推奨となった NoiseModel.as_dict, QuantumError.as_dict, ReadoutError.as_dict, QuantumError.kron メソッドを削除しました。

イグニス 0.2

変更なし

アクア 0.6

変更なし

IBM Q プロバイダー 0.4.6

追加

  • IBMQBackend にいくつかの新しいメソッドが追加された:

    • wait_for_final_state() はジョブが終了するまでブロックする。 コールバック関数を受け取り、クエリごとに呼び出してフィードバックを提供する。
    • active_jobs() バックエンドに送信されたジョブのうち、現在未完了のステータスのものを返します。
    • job_limit() バックエンドのジョブ制限を返します。
    • remaining_jobs_count() は、ジョブの上限に達するまでにバックエンドに送信できるジョブの数を返します。
  • QueueInfo に、キュー情報を整形した文字列を返す新しいメソッド format() が追加されました。

  • IBMQJob の3つのメソッドが追加された: done() running()cancelled() の3つのメソッドが追加された。

  • qiskit.providers.ibmq.ibmqbackend.IBMQBackend.run() オプションのjob_tagsパラメータを受け付けるようになった。 指定された場合、job_tagsはジョブに割り当てられ、後に qiskit.providers.ibmq.ibmqbackend.IBMQBackend.jobs() でフィルターとして使用できる。

  • IBMQJobManager 新しいメソッド retrieve_job_set() が追加され、ジョブセットIDを使用して以前に送信されたジョブセットを取得できるようになりました。

変更

  • Exception 、より専門的なクラスが追加された。 ただし、その親例外( IBMQAccountError など)は引き続きキャッチできる。 また、例外クラス IBMQApiUrlErrorIBMQAccountCredentialsInvalidUrlIBMQAccountCredentialsInvalidToken に置き換えられている。

非推奨

  • プロトコルを指定しないプロキシURLの使用 (例: http://) は、最近の Python の変更により非推奨となりました。
このページは役に立ちましたか?
バグや誤字の報告、またはコンテンツの要求はGitHubで行ってください。