Skip to main content
IBM Quantum Platform

Qiskit 0.30 Versionshinweise


0.30.1

Terra- 0.18.3

Vorspiel

Dieses Bugfix-Release behebt einige kleinere Probleme in 0.18, einschließlich einer Leistungsverschlechterung in assemble beim Umgang mit der Ausführung von QuantumCircuit objekten auf Puls-aktivierten Backends.

Fehlerkorrekturen

  • Fix #7004 : AttributeError wurde ausgelöst, wenn die Ausführung ScheduleBlock auf einem Puls-Backend. Diese Blöcke werden nun korrekt als Impulsaufträge behandelt, wie Schedule.
  • Es wurde ein Fehler behoben, der beim Binden eines komplexen Parameterwerts an den Koeffizienten eines Operators auftrat. Würfe nach float in PrimitiveOp wurden bei Bedarf auf complex verallgemeinert, bleiben aber float , wenn es keine imaginäre Komponente gibt. Behebt #6976.
  • Aktualisierung der 1-Qubit-Gatterfehler in plot_error_map um das sx-Gatter anstelle des u2 -Gatters zu verwenden, in Übereinstimmung mit IBMQ-Backends.

Aer- 0.9.0

Keine Änderung

Ignis- 0.6.0

Keine Änderung

Aqua- 0.9.5

Keine Änderung

IBM Q Anbieter 0.16.0

Keine Änderung


0.30.0

Terra- 0.18.2

Keine Änderung

Aer- 0.9.0

Vorspiel

Die Version 0.9 enthält neue Backend-Optionen für die parallele Exeuktion einer großen Anzahl von Schaltkreisen auf einem HPC-Cluster unter Verwendung eines verteilten Dask, sowie weitere allgemeine Leistungsverbesserungen und Fehlerbehebungen.

Neue Funktionen

  • Unterstützung für set_matrix_product_state wurde hinzugefügt.

  • Qiskit-Bibliothek hinzufügen SXdgGate und CUGate zu den unterstützten Basisgattern für die Aer-Simulator-Backends. Beachten Sie, dass das CUGate gate nur für die Methoden statevector und unitary unterstützt wird. Bei anderen Simulationsmethoden muss sie in die für diese Methode unterstützten Basistore transponiert werden.

  • Fügt allen Simulationsmethoden der AerSimulator und QasmSimulator Unterstützung für N-Qubit-Pauli-Gatter ( qiskit.circuit.library.generalized_gates.PauliGate) hinzu.

  • Fügt die Möglichkeit hinzu, einen benutzerdefinierten Executor festzulegen und die Aufteilung von Aufträgen zu konfigurieren, um mehrere Schaltkreise parallel auf einem HPC-Clustor auszuführen. Ein benutzerdefinierter Executor kann mit der Option executor eingestellt werden, und die Aufteilung von Aufträgen wird mit der Option max_job_size konfiguriert.

    Zum Beispiel das Konfigurieren eines Backends und das Ausführen mit

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

    wird die Exektion in mehrere Aufträge aufgeteilt, die jeweils einen einzelnen Schaltkreis enthalten. Wenn das Job-Splitting aktiviert ist, gibt die Methode run ein AerJobSet Objekt zurück, das alle einzelnen AerJob Klassen enthält. Nachdem alle einzelnen Aufträge ausgeführt wurden, werden die Auftragsergebnisse automatisch zu einem einzigen Ergebnisobjekt zusammengefasst, das von job.result() zurückgegeben wird.

    Unterstützt werden die Executors des Moduls Python concurrent.futures (z. B. ThreadPoolExecutor, ProcessPoolExecutor) und die Executors des verteilten Dask-Clients, wenn die optionale Dask-Bibliothek installiert ist. Die Verwendung eines Dask-Executors ermöglicht die Konfiguration der parallelen Ausführung mehrerer Schaltungen auf HPC-Clustern.

  • Fügt die Möglichkeit hinzu, Protokollierungsdaten für die matrix_product_state Simulationsmethode zu den Metadaten des Experimentergebnisses aufzuzeichnen, indem die Backend-Option mps_log_data=True gesetzt wird. Die gespeicherten Daten umfassen die Bindungsabmessungen und den verworfenen Wert (die Summe der Quadrate der Schmidt-Koeffizienten, die durch Annäherung verworfen wurden) nach jeder relevanten Schaltanweisung.

  • Die Methode run() für AerSimulator, QasmSimulator, StatevectorSimulator und UnitarySimulator hat einen neuen kwarg, parameter_binds , der verwendet wird, um eine Liste von Werten für alle ungebundenen Parameter in der Eingangsschaltung zu liefern. Zum Beispiel:

    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()

    führt die Eingangsschaltung dreimal mit den Werten 0, 3.14 und 6.28 für Theta aus. Bei der Ausführung mit mehreren Parametern muss die Länge der Wertelisten alle gleich sein. Wenn Sie mit mehreren Stromkreisen arbeiten, muss die Länge von parameter_binds mit der Anzahl der Eingangsstromkreise übereinstimmen (Sie können ein leeres Diktat, {}, verwenden, wenn es keine Bindungen für einen Stromkreis gibt).

  • Die PulseSimulator kann nun auch QuantumCircuit objekte auf die run() übertragen. Zuvor konnte es nur Schedule objekte als Eingabe für run(). Wenn dem Simulator ein Schaltkreis oder eine Liste von Schaltkreisen übergeben wird, ruft er schedule() auf, um die Schaltkreise in einen Zeitplan umzuwandeln, bevor er den Schaltkreis ausführt. Zum Beispiel:

    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)

Bekannte Probleme

  • SaveExpectationValue und SaveExpectationValueVariance wurden für die extended_stabilizer-Methode von QasmSimulator und AerSimulator deaktiviert, da sie den falschen Wert für bestimmte Pauli-Operator-Komponenten zurückgeben. Siehe #1227 <https://github.com/Qiskit/qiskit-aer/issues/1227> für weitere Informationen und Beispiele.

Anmerkungen zu Upgrades

  • Die Standardbasis für die Klasse NoiseModel wurde von ["id", "u3", "cx"] auf ["id", "rz", "sx", "cx"] geändert, da die Methode u3 circuit in qiskit-terra veraltet ist und die Basis-Gates des qiskit-ibmq-provider-Backends geändert wurden. Um die alten Basisgatter zu verwenden, können Sie ein Rauschmodell mit benutzerdefinierten Basisgattern als NoiseModel(basis_gates=["id", "u3", "cx"]) initialisieren.
  • Der backend_options kwarg wurde aus der run methnod of Aer backends entfernt, der in qiskit-aer 0.7 veraltet war. Alle Laufoptionen müssen nun als separate kwargs übergeben werden.
  • Die Übergabe von system_model als Positionsargument für die Methode run des PulseSimulator wurde entfernt.

Hinweise zu veralteten Versionen

  • Die direkte Übergabe eines assemblierten qobj an die Methode run() des Aer-Simulator-Backends wurde zugunsten der direkten Übergabe von transpilierten Schaltungen als backend.run(circuits, **run_options) veraltet.
  • Alle Snapshot-Anweisungen in qiskit.providers.aer.extensions sind veraltet. Verwenden Sie für den Austausch die Speicheranweisungen des Moduls qiskit.providers.aer.library .
  • Das Hinzufügen von nichtlokalen Quantenfehlern zu NoiseModel wurde aufgrund von Unstimmigkeiten bei der Anwendung dieses Rauschens auf die optimierte Schaltung veraltet. Nichtlokales Rauschen sollte in Qiskit mit Hilfe eines benutzerdefinierten Transpiler-Durchlaufs manuell zu einer geplanten Schaltung hinzugefügt werden, bevor sie im Simulator ausgeführt wird.
  • Die Verwendung der Option method der Programme StatevectorSimulator und UnitarySimulator zur Ausführung einer GPU-Simulation ist veraltet. Um eine GPU-Simulation auf einem kompatiblen System durchzuführen, verwenden Sie stattdessen die Option device='GPU' .

Fehlerkorrekturen

  • Behebt ein Leistungsproblem mit der Art und Weise, wie das Konfigurationsattribut basis_gates gesetzt wurde. Zuvor gab es unbeabsichtigte Nebeneffekte in der Backend-Klasse, die dazu führen konnten, dass sich die Laufzeit der wiederholten Simulationen inkrementell erhöhte. Siehe #1229 <https://github.com/Qiskit/qiskit-aer/issues/1229> für weitere Informationen und Beispiele.
  • Fehler in MPS::apply_kraus behoben. Nachdem die Kraus-Matrix auf die betreffenden Qubits angewendet wurde, sollten wir die Änderungen auf die benachbarten Qubits übertragen.
  • Behebt einen Fehler, bei dem qiskit-terra davon ausgeht, dass die Qubits in einem Multiplexer-Gatter zuerst die Ziele und dann die Kontrollen des Gatters sind, während qiskit-aer die umgekehrte Reihenfolge annimmt.
  • Behebt einen in 0.8.0 eingeführten Fehler, bei dem GPU-Simulationen zusätzlich zum GPU-Speicher unbenötigten Host-Speicher zugewiesen haben.
  • Behebt einen Fehler, bei dem die Initialisierungsanweisung die Optimierung der Messwertabtastung für die Zustandsvektor- und Matrixprodukt-Zustandssimulationsmethoden deaktivierte, selbst wenn sie die erste Schaltungsanweisung war oder auf alle Qubits angewandt wurde und somit deterministisch war.
  • Behebung des Problems #1196 durch Verwendung der inneren Produkte mit den Berechnungsbasiszuständen zur Berechnung der Norm anstelle des Algorithmus zur Normschätzung.
  • Behebt einen Fehler in der stabilizer Simulator-Methode von QasmSimulator und AerSimulator , bei dem der Erwartungswert für save_expectation_value und snapshot_expectation_value für bestimmte Y Pauli's das falsche Vorzeichen haben konnte.
  • Behebt einen Fehler, bei dem, wenn der benötigte Speicher kleiner als der Systemspeicher ist, die Multi-Chunk-Simulationsmethode aktiviert war und die Simulation trotzdem gestartet wurde. In diesem Fall wird nun eine Ausnahme bei unzureichendem Speicher ausgelöst.
  • Es wurde ein Problem behoben, bei dem die Einstellung der Option shots für ein Backend mit set_options(shots=k) immer die Standardanzahl von Schüssen (1024) und nicht den angegebenen Wert verwendet hat.
  • Behebt einen Fehler in der Art und Weise, wie AerSimulator den Optionswert für max_parallel_experiments=1 behandelt. Zuvor wurde dies genauso behandelt wie max_parallel_experiments=0.
  • Behebt einen Fehler in der extended_stabilizer Simulationsmethode, der dazu führte, dass Qelay-Gate- und Multi-Qubit-Pauli-Befehle fälschlicherweise als nicht unterstützt angesehen wurden.
  • Behebt Tippfehler in den Optionen AerSimulator und QasmSimulator für die Option extended_stabilizer_norm_estimation_repetitions .
  • Behebung eines Fehlers bei der Anwendung des unitary Gatters unter Verwendung der matrix_product_state Simulationsmethode, die Permutationen in der Reihenfolge der Qubits, auf die das Gatter angewendet wird, nicht korrekt unterstützt hat.
  • Behebt ein Problem, bei dem die Gatterfusion für die Simulationsmethode matrix_product_state aktiviert werden konnte, obwohl sie nicht unterstützt wird. Jetzt ist die Verschmelzung bei dieser Methode immer deaktiviert.
  • Fehler in der matrix_product_state Simulationsmethode bei der Berechnung der Normalisierung nach Abschneiden der Schmidt-Koeffizienten nach Durchführung der SVD behoben.

Sonstige Anmerkungen

  • Verbessert die Leistung des Algorithmus für die Messwerterfassung bei der Simulationsmethode matrix_product_state . Das neue Standardverhalten ist, dass immer die verbesserte Methode mps_apply_measure verwendet wird. Die Probenahmemethode mps_probabilities kann weiterhin verwendet werden, indem der Wert der benutzerdefinierten Option mps_sample_measure_algorithm="mps_probabilities" eingestellt wird.

Ignis- 0.6.0

Keine Änderung

Aqua- 0.9.5

Keine Änderung

IBM Q Anbieter 0.16.0

Keine Änderung

War diese Seite hilfreich?
Melden Sie auf GitHub einen Fehler, einen Tippfehler oder fordern Sie Inhalte an.