Qiskit 0.36 Versionshinweise
0.36.2
Terra- 0.20.2
Vorspiel
Qiskit Terra 0.20.2 ist eine Bugfix-Version, die einige kleinere Probleme behebt, die seit der letzten Patch-Version aufgetreten sind.
Fehlerkorrekturen
-
Ein Problem wurde behoben mit
BackendV2-basierenden Fake-Backend-Klassen aus dem Modulqiskit.providers.fake_providerwieFakeMontrealV2, bei denen die Werte für diedtmunddtattribute und das zugehörige AttributTarget.dtnicht korrekt in Sekunden umgewandelt wurden. Dies würde zu Problemen bei der Verwendung dieser gefälschten Backends mit der Zeitplanung führen. Siehe #8018. -
marginal_counts()wird nun erfolgreich sein, wenn er aufgefordert wird, Speicher mit einemindicesParameter zu marginalisieren, der Elemente ungleich Null enthält. Zuvor konnten Schüsse, deren hexadezimale Ergebnisdarstellung hinreichend klein war, eineValueErrorauslösen. Siehe #8044. -
Der OpenQASM 3 Exporter (
qiskit.qasm3) gibt nuninputoderoutputvor den Gate-Deklarationen aus. Dies entspricht eher der aktuellen ANTLR-Referenzgrammatik des OpenQASM 3-Teams. Siehe #7964. -
Es wurde ein Fehler im
RZXCalibrationBuildertranspiler-Durchgang, bei dem die skalierte Kreuzresonanz-Impulsamplitude auch nach der Zuweisung parametrisiert erscheinen konnte. Dies könnte dazu führen, dass die Pulsvisualisierungstools das parametrisierte Format anstelle des erwarteten numerischen Formats verwenden. Siehe #8031. -
Es wurde ein Problem mit der
transpile()funktion, wenn diese mit einemBackendV2-basierten Backend und dem Schlüsselwortargumentscheduling_methodausgeführt wird. Bisher hat die Funktion die Standarddauer der vom Backend unterstützten Anweisungen nicht korrekt verarbeitet, was zu einem Fehler führte. -
Es wurde ein Fehler im
RZXCalibrationBuildertranspiler-Durchgang behoben, der dazu führte, dass Impulse manchmal mit falschen Dauern konstruiert wurden. Siehe #7994. -
Der
SabreSwaptranspiler-Pass, der intranspile()verwendet wird, wennrouting_method="sabre"gesetzt ist, lässt während der Routing-Phase der Transpilierung nicht mehr sporadisch klassisch konditionierte Gatter und ihre Nachfolger aus Schaltungen fallen. Siehe #8040. -
Statevectorerlaubt nun die direkte Iteration durch seine Werte (wiefor coefficient in statevector) und meldet seine Länge korrekt unterlen. Zuvor wurde versucht, auf Daten außerhalb des zulässigen Bereichs zuzugreifen, und es wurde einQiskitError. Siehe #8039.
Aer- 0.10.4
Keine Änderung
Ignis- 0.7.1
Vorspiel
Dies ist eine Bugfix-Veröffentlichung, die in erster Linie ein Paketierungsproblem behebt, das dazu führte, dass das Verzeichnis docs/ , das die zur Erstellung der qiskit-ignis-Dokumentation verwendeten Quelldateien enthält, in das Paket Python aufgenommen wurde.
IBM Q Anbieter 0.19.1
Keine Änderung
0.36.1
Terra- 0.20.1
Vorspiel
Qiskit Terra 0.20.1 ist eine Fehlerbehebungsversion, die Probleme aus der Version 0.20.0 behebt.
Bekannte Probleme
-
QPY-Deserialisierung mit der
qpy.load()funktion eines direkt instanziiertenUCPauliRotGateobjekts in einem Schaltkreis scheitert, weil das Argument der Rotationsachse in der Klasse nicht an einem Standardort gespeichert ist. Um dieses Problem zu umgehen, können Sie stattdessen die Unterklassen verwenden:UCRXGate,UCRYGate, oderUCRZGate(je nachdem, ob Sie eine Drehachse von"X","Y"oder"Z"verwenden), die die Drehachse in den Klassenkonstruktor einbettet und in QPY korrekt funktioniert. -
Seit seiner ursprünglichen Einführung in Qiskit Terra 0.20,
XXPlusYYGateim Vergleich zu allen anderen Rotationstoren eine negative Winkelkonvention verwendet. In Qiskit Terra 0.21 wird dies korrigiert, damit es mit den anderen Rotationstoren übereinstimmt. Dies wirkt sich nicht auf andere Rotationstore aus, nochXXMinusYYGate.
Fehlerkorrekturen
-
Festgelegt
Clifford,PauliundCNOTDihedraloperatorinitialisierung von kompatiblen Schaltungen, dieDelayanweisungen enthalten. Diese Anweisungen werden bei der Umwandlung in Operatoren als Identitäten behandelt. -
Ein Problem wurde behoben, bei dem die
eval_observables()funktion einen Fehler auslöste, wenn ihrquantum_stateArgument vom TypStateFnwar.eval_observablesunterstützt nun korrekt alle Eingabetypen, die in den Typ-Hinweisen angegeben sind. -
Ein Problem mit der Visualisierungsfunktion wurde behoben
dag_drawer()und MethodeDAGCircuit.draw()wo früher die Schublade fehlschlug, wenn versucht wurde, eine Visualisierung für einDAGCircuitobjekt zu erzeugen, das einQubitoderClbitenthielt, das nicht Teil einesQuantumRegisteroderClassicalRegisterwar. Behoben #7915. -
Die Parametervalidierung für die Klasse
Dragwurde korrigiert. Zuvor war es unempfindlich gegenüber großen Beta-Werten mit negativem Vorzeichen, was zu Wellenformabtastungen mit einem Maximalwert führen konnte, der die Amplitudengrenze von 1.0 überschritt. -
Die
QuantumInstanceklasse, die von vielen Algorithmen (z. B.VQE) verwendet wird, kodiert den Wert für einen Ruhezustand fest, während sie in einer Schleife auf die Aktualisierung des Auftragsstatus wartet. Er respektiert nun den konfigurierten Schlafwert, wie er im Attributwaitim Initialisierer vonQuantumInstance. -
Es wurde ein Problem mit der Funktion
schedulefunktion behoben, bei der Aufrufer, die einelistvonQuantumCircuitobjekte mit einem einzigen Eintrag angeben, fälschlicherweise ein einzelnesScheduleobjekt anstelle eineslistzurückgegeben wurde. -
Es wurde ein Problem mit der Visualisierungsfunktion
plot_error_mapbehoben, das verhinderte, dass sie mit einem Backend funktionierte, das einen Auslesefehler in der bereitgestellten Backend-DateiBackendPropertiesdefiniert war, oder wenn sie mit einemBackendV2backend. Behoben #7879. -
Ein Fehler wurde behoben, der zu exponentieller Laufzeit und Nichtbeendigung führen konnte, wenn eine
Pauliinstanz an die Methodeinit_observables()übergeben wird. -
Festgelegt
SabreSwapund durch Erweiterungtranspile()mitoptimization_level=3, gelegentlich eine ungültige Neuordnung der Messungen. Wenn früher zwei Messungen auf dasselbe klassische Bit geschrieben wurden, konnteSabreSwap(abhängig von der Kopplungskarte) neu anordnen, um eine nicht-äquivalente Schaltung zu erzeugen. Dieses Verhalten war stochastisch, so dass es möglicherweise nicht zuverlässig war. Behoben #7950 -
Der
SabreSwaptranspiler-Pass, und damit auchSabreLayoutundtranspile()aufoptimization_level=3, verfügt nun über einen Escape-Mechanismus, der garantiert, dass er niemals in einer Endlosschleife stecken bleiben kann. Bestimmte Eingaben konnten früher mit viel Pech in einem stabilen lokalen Minimum des Suchraums steckenbleiben, so dass der Durchlauf nie weiter vorankam. Es erzwingt nun eine Reihe von Vertauschungen, die eine Fortsetzung des Routings ermöglichen, wenn es feststellt, dass es in letzter Zeit keine Fortschritte gemacht hat. Behoben #7707. -
Es wurde ein Problem mit der QPY-Deserialisierung über die
qpy.load()funktion derUCRXGate,UCRYGate, undUCRZGateklassen. Zuvor führte eine QPY-Datei, die eines dieser Gates enthielt, beim Versuch, die Datei zu laden, zu einem Fehler. Behoben #7847.
Aer- 0.10.4
Keine Änderung
Ignis- 0.7.0
Keine Änderung
IBM Q Anbieter 0.19.1
0.19.1
Fehlerkorrekturen
- PR #1129 aktualisiert die Methode
least_busy(), so dass BaseBackend nicht mehr als gültiger Ein- oder Ausgabetyp unterstützt wird, da es in qiskit-terra schon lange veraltet ist und kürzlich entfernt wurde.
0.36.0
Terra- 0.20.0
Keine Änderung
Aer- 0.10.4
Anmerkungen zu Upgrades
- Qiskit Aer wird nicht mehr mit unsicheren Gleitkomma-Optimierungen kompiliert. Während die meisten Auswirkungen auf Qiskit Aer beschränkt sein sollten, könnten einige Aspekte der subnormalen Behandlung durch die falsche Einstellung des "flush to zero"-Modus durch die Bibliothek in den Anwendercode gelangt sein. Dies wird nicht mehr geschehen.
Fehlerkorrekturen
-
Der Transpiler für die Cache-Blockierung erkennt nun, dass Superop im Cache blockiert ist. Dies ist ein Fix für das Problem 1479 <https://github.com/Qiskit/qiskit-aer/issues/1479> jetzt kann density_matrix mit Rauschmodellen parallelisiert werden. Ein neuer Test, test_noise.TestNoise.test_kraus_gate_noise_on_QFT_cache_blocking wurde hinzugefügt, um dieses Problem zu überprüfen. Diese Korrektur beinhaltet auch die Behebung des Problems 1483 <https://github.com/Qiskit/qiskit-aer/issues/1483>, das durch Hinzufügen eines neuen Testfalls entdeckt wurde. Damit wird die Messung über Chunks für statevector festgelegt.
-
Behebt einen Fehler in
NoiseModel.from_backend(), der einen Fehler auslöste, wenn T2 einen Wert größer als 2 * T1 vom Backend geliefert wurde. Nach dieser Korrektur wird der Wert von T2 bis zu 2 * T1 abgeschnitten und eine Benutzerwarnung ausgegeben, wenn er abgeschnitten wird. Der Fehler wurde in #1391 eingeführt, und davor hatteNoiseModel.from_backend()den Wert T2 bis zu 2 * T1 stillschweigend abgeschnitten.Siehe Ausgabe 1464 für weitere Einzelheiten.
-
device=Thrust war bei einer kleinen Anzahl von Qubits sehr langsam, da immer OpenMP threading angewendet wurde. Diese Korrektur gilt für OpenMP Threads genauso wie für device=CPU unter Verwendung von statevector_parallel_threshold.
-
Qiskit Aer setzt den Fließkommamodus beim Laden nicht mehr auf "flush to zero". Nachgeschaltete Benutzer haben möglicherweise zuvor Warnungen von Numpy gesehen, wie zum Beispiel:
Der Wert der kleinsten Subnormale für den Typ <class ‘numpy.float64’> ist Null.
Diese werden nun nicht mehr ausgegeben, und die Fließkomma-Behandlung ist korrekt.
-
Ein mögliches Problem bei der Ausführung von Simulationen auf Schaltkreisen mit dem
QuantumCircuit.metadataattribut gesetzt ist. Dasmetadataattribut kann ein beliebiges Python-Wörterbuch sein. Bisher hat qiskit-aer versucht, den Inhalt des Attributs in JSON zu serialisieren, um ihn zusammen mit dem Rest der Schaltkreiseingabe zu verarbeiten, auch wenn der Inhalt nicht in JSON serialisierbar war. Dies tritt nicht mehr auf, da dasQuantumCircuit.metadataattribut nicht mehr verwendet wird, um die Simulation auszuführen, so dass der Inhalt jetzt nicht mehr serialisiert wird und stattdessen direkt an dasqiskit.result.Resultobjekt angehängt, ohne zu versuchen, den Inhalt in JSON zu serialisieren. Behoben #1435
Ignis- 0.7.0
Keine Änderung
IBM Q Anbieter 0.19.0
Neue Funktionen
- Das Paket qiskit-ibmq-provider unterstützt jetzt die Funktionen von IBM Quantum LiveData. Mit diesen Funktionen können die Benutzer das Echtzeitverhalten von IBM Quantum-Backends während der Ausführung von Aufträgen beobachten. Insbesondere enthält der Anbieter jetzt eine neue Registerkarte im Jupyter-Widget des Backends und unterstützt die Ausführung von Aufträgen (über die Methode
qiskit.providers.ibmq.IBMQBackend.run()) mit dem Parameter live_data_enabled=True in zulässigen IBM Quantum-Backends. - Sie können jetzt eine andere Protokollierungsstufe im Schlüsselwort
optionsangeben, wenn Sie einen Qiskit Runtime Auftrag mit der Methodeqiskit.providers.ibmq.runtime.IBMRuntimeService.run()übermitteln.
Anmerkungen zu Upgrades
- Python 3.6 die Unterstützung wurde eingestellt, da sie im Dezember 2021 das Ende ihrer Lebensdauer erreicht hat.
- qiskit.providers.ibmq.random der Zufallszahlendienst, der für den Zugriff auf den CQC-Zufallsextraktor verwendet wurde, wird nicht mehr unterstützt und wurde entfernt.
Hinweise zu veralteten Versionen
- Das Schlüsselwort
imagein der Methodeqiskit.providers.ibmq.runtime.IBMRuntimeService.run()ist veraltet. Stattdessen sollten Sie das zu verwendende Bild mit dem Schlüsselwortoptionsangeben.
Fehlerkorrekturen
- Behebt das Problem [#190] ( https://github.com/Qiskit/qiskit-ibm-provider/issues/190 ). Jetzt wurden
qiskit.providers.ibmq.runtime.RuntimeEncoderundqiskit.providers.ibmq.runtime.RuntimeDecoderaktualisiert, um Instanzen der Klasse Instruction zu behandeln. - Behebt das Problem #74, bei dem Numpy-Ndarrays mit Objekttypen nicht serialisiert werden konnten.
qiskit.providers.ibmq.runtime.RuntimeEncoderundqiskit.providers.ibmq.runtime.RuntimeDecoderwurden aktualisiert, um mit diesen ndarrays umgehen zu können.