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 :
AttributeErrorwurde ausgelöst, wenn die AusführungScheduleBlockauf einem Puls-Backend. Diese Blöcke werden nun korrekt als Impulsaufträge behandelt, wieSchedule. - Es wurde ein Fehler behoben, der beim Binden eines komplexen Parameterwerts an den Koeffizienten eines Operators auftrat. Würfe nach
floatinPrimitiveOpwurden bei Bedarf aufcomplexverallgemeinert, bleiben aberfloat, wenn es keine imaginäre Komponente gibt. Behebt #6976. - Aktualisierung der 1-Qubit-Gatterfehler in
plot_error_mapum 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
SXdgGateundCUGatezu den unterstützten Basisgattern für die Aer-Simulator-Backends. Beachten Sie, dass dasCUGategate nur für die Methodenstatevectorundunitaryunterstützt wird. Bei anderen Simulationsmethoden muss sie in die für diese Methode unterstützten Basistore transponiert werden. -
Fügt allen Simulationsmethoden der
AerSimulatorundQasmSimulatorUnterstü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
executoreingestellt werden, und die Aufteilung von Aufträgen wird mit der Optionmax_job_sizekonfiguriert.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
runeinAerJobSetObjekt zurück, das alle einzelnenAerJobKlassen enthält. Nachdem alle einzelnen Aufträge ausgeführt wurden, werden die Auftragsergebnisse automatisch zu einem einzigen Ergebnisobjekt zusammengefasst, das vonjob.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_stateSimulationsmethode zu den Metadaten des Experimentergebnisses aufzuzeichnen, indem die Backend-Optionmps_log_data=Truegesetzt 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ürAerSimulator,QasmSimulator,StatevectorSimulatorundUnitarySimulatorhat 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_bindsmit der Anzahl der Eingangsstromkreise übereinstimmen (Sie können ein leeres Diktat,{}, verwenden, wenn es keine Bindungen für einen Stromkreis gibt). -
Die
PulseSimulatorkann nun auchQuantumCircuitobjekte auf dierun()übertragen. Zuvor konnte es nurScheduleobjekte als Eingabe fürrun(). Wenn dem Simulator ein Schaltkreis oder eine Liste von Schaltkreisen übergeben wird, ruft erschedule()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
SaveExpectationValueundSaveExpectationValueVariancewurden für die extended_stabilizer-Methode vonQasmSimulatorundAerSimulatordeaktiviert, 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
NoiseModelwurde von["id", "u3", "cx"]auf["id", "rz", "sx", "cx"]geändert, da die Methodeu3circuit 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 alsNoiseModel(basis_gates=["id", "u3", "cx"])initialisieren. - Der
backend_optionskwarg wurde aus derrunmethnod 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_modelals Positionsargument für die MethoderundesPulseSimulatorwurde 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 alsbackend.run(circuits, **run_options)veraltet. - Alle Snapshot-Anweisungen in
qiskit.providers.aer.extensionssind veraltet. Verwenden Sie für den Austausch die Speicheranweisungen des Modulsqiskit.providers.aer.library. - Das Hinzufügen von nichtlokalen Quantenfehlern zu
NoiseModelwurde 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
methodder ProgrammeStatevectorSimulatorundUnitarySimulatorzur Ausführung einer GPU-Simulation ist veraltet. Um eine GPU-Simulation auf einem kompatiblen System durchzuführen, verwenden Sie stattdessen die Optiondevice='GPU'.
Fehlerkorrekturen
- Behebt ein Leistungsproblem mit der Art und Weise, wie das Konfigurationsattribut
basis_gatesgesetzt 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
stabilizerSimulator-Methode vonQasmSimulatorundAerSimulator, bei dem der Erwartungswert fürsave_expectation_valueundsnapshot_expectation_valuefür bestimmteYPauli'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
shotsfür ein Backend mitset_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
AerSimulatorden Optionswert fürmax_parallel_experiments=1behandelt. Zuvor wurde dies genauso behandelt wiemax_parallel_experiments=0. - Behebt einen Fehler in der
extended_stabilizerSimulationsmethode, 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
AerSimulatorundQasmSimulatorfür die Optionextended_stabilizer_norm_estimation_repetitions. - Behebung eines Fehlers bei der Anwendung des
unitaryGatters unter Verwendung dermatrix_product_stateSimulationsmethode, 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_stateaktiviert werden konnte, obwohl sie nicht unterstützt wird. Jetzt ist die Verschmelzung bei dieser Methode immer deaktiviert. - Fehler in der
matrix_product_stateSimulationsmethode 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 Methodemps_apply_measureverwendet wird. Die Probenahmemethodemps_probabilitieskann weiterhin verwendet werden, indem der Wert der benutzerdefinierten Optionmps_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