Skip to main content
IBM Quantum Platform

Qiskit 0.9 Versionshinweise


0.9

Terra- 0.8

Schwerpunkte

  • Einführung des Pulse-Moduls unter qiskit.pulse, das Werkzeuge für die Erstellung von Pulsbefehlen, deren Planung auf Pulskanälen, die Visualisierung und deren Ausführung auf IBM Q-Geräten enthält.
  • Verbesserte QuantumCircuit und Anweisungsklassen, die die Komposition beliebiger Unterschaltungen zu größeren Schaltungen sowie die Erstellung parametrisierter Schaltungen ermöglichen.
  • Ein leistungsfähiges Quantum-Info-Modul unter qiskit.quantum_info, das Werkzeuge für die Arbeit mit Operatoren und Kanälen und deren Verwendung in Schaltungen bietet.
  • Neue Transpiler-Optimierungspässe und Zugriff auf vordefinierte Transpilierroutinen.

Neue Funktionen

  • Die Kernroutine StochasticSwap ist in Cython implementiert.
  • QuantumChannel Klassen für die Bearbeitung von Quantenkanälen und CPTP-Karten hinzugefügt.
  • Unterstützung für parametrisierte Schaltungen.
  • Die Schnittstelle PassManager wurde verbessert und um neue Funktionen erweitert, um die Interaktion und die Verwendung mit benutzerdefinierten Passmanagern zu erleichtern.
  • Voreingestellte PassManagers sind jetzt enthalten, die eine vorbestimmte Pipeline von Transpilerdurchläufen bieten.
  • Benutzerkonfigurationsdateien, damit lokale Umgebungen die Standardwerte für einige Funktionen überschreiben können.
  • Neue Transpilerpässe: EnlargeWithAncilla, Unroll2Q, NoiseAdaptiveLayout, OptimizeSwapBeforeMeasure, RemoveDiagonalGatesBeforeMeasure, CommutativeCancellation, Collect2qBlocks, und ConsolidateBlocks.

Hinweise zur Kompatibilität

Als Teil der Version 0.8 wurden die folgenden Dinge veraltet und werden entweder entfernt oder in einer zukünftigen Version abwärtskompatibel geändert. Auch wenn es nicht unbedingt notwendig ist, sind dies Dinge, die vor der Veröffentlichung von 0.9 (sofern nicht anders angegeben) angepasst werden sollten, um zukünftige Änderungen zu vermeiden.

  • Die Methoden mit dem Präfix _get im Objekt DAGCircuit werden ohne dieses Präfix umbenannt.
  • Die Elemente in couplinglist von CouplingMap wurden von Tupeln in Listen geändert.
  • Unroller-Basen müssen nun explizit sein, und eine Verletzung führt zu einer informativen QiskitError.
  • Das Paket qiskit.tools.qcvv ist veraltet und wird in Zukunft entfernt werden. Sie sollten zur Verwendung von Qiskit Ignis wechseln, das dieses Modul ersetzt.
  • Die Funktion qiskit.compile() wird nun zugunsten der expliziten Verwendung der Funktion qiskit.compiler.transpile() zur Umwandlung eines Schaltkreises, gefolgt von qiskit.compiler.assemble() , um daraus ein Qobj zu machen, veraltet. Anstelle von compile(...) verwenden Sie assemble(transpile(...), ...).
  • qiskit.converters.qobj_to_circuits() ist veraltet und wird in einer zukünftigen Version entfernt werden. Stattdessen sollte qiskit.assembler.disassemble() verwendet werden, um QuantumCircuit Objekte aus einem kompilierten Qobj zu extrahieren.
  • Der Namespace qiskit.mapper ist veraltet. Die Klassen Layout und CouplingMap können über qiskit.transpiler aufgerufen werden.
  • Einige Funktionen in qiskit.tools.qi.qi sind veraltet und wurden nach qiskit.quantum_info verschoben.

Bitte beachten Sie, dass in dieser Version einige abwärtsinkompatible Änderungen vorgenommen wurden. Die folgenden Hinweise enthalten Informationen darüber, wie Sie sich auf diese Änderungen einstellen können.

IBM Q Anbieter

Der Anbieter IBM Q war früher in Terra enthalten, wurde aber in ein separates Paket aufgeteilt qiskit-ibmq-provider. Diese muss installiert werden, entweder über pypi mit pip install qiskit-ibmq-provider oder aus dem Quellcode, um auf qiskit.IBMQ oder qiskit.providers.ibmq zugreifen zu können. Wenn Sie qiskit mit pip install qiskit installieren, werden automatisch alle Unterpakete des Qiskit-Projekts installiert.

Cython-Komponenten

Ab der Version 0.8 ist die zentrale stochastische Tauschroutine nun in Cython implementiert. Dies wurde getan, um die Leistung des Swappers deutlich zu verbessern. Wenn Sie Terra jedoch aus dem Quellcode erstellen oder auf einer non-x86 oder einer anderen Plattform ohne vorgefertigte Wheels laufen lassen und aus der Quelldistribution installieren, müssen Sie sicherstellen, dass Sie Cython installiert haben, bevor Sie Qiskit Terra installieren/erstellen. Dies kann einfach mit pip/pypi gemacht werden: pip install Cython.

Compiler-Workflow

Die Funktion qiskit.compile() wurde abgeschafft und durch den Aufruf von qiskit.compiler.transpile() ersetzt, um die Optimierung und das Mapping eines Schaltkreises durchzuführen, und dann qiskit.compiler.assemble() , um ein Qobj aus diesem optimierten Schaltkreis zu erstellen und an ein Backend zu senden. Obwohl es sich hierbei nur um eine Veraltung handelt, wird eine Warnung ausgegeben, wenn Sie den alten Aufruf qiskit.compile() verwenden.

transpile(), assemble(), execute() Parameter

Diese Funktionen sind stark überlastet und akzeptieren ein breites Spektrum an Eingaben. Sie können Stromkreis- und Impulseingänge verarbeiten. Alle kwargs mit Ausnahme von backend für diese Funktionen akzeptieren nun auch Listen der zuvor akzeptierten Typen. Der initial_layout kwarg kann jetzt sowohl als Liste als auch als Wörterbuch angegeben werden, z.B. um ein Bell-Experiment auf die Qubits 13 und 14 abzubilden, kann man angeben: initial_layout=[13, 14] oder initial_layout={qr[0]: 13, qr[1]: 14}

Qobj

Die Klasse Qobj wurde je nach Anwendungsfall in zwei getrennte Unterklassen aufgeteilt, entweder PulseQobj oder QasmQobj für Impuls- bzw. Schaltkreisaufträge. Wenn Sie direkt mit Qobj interagieren, müssen Sie möglicherweise Ihre Verwendung entsprechend anpassen.

qiskit.qobj.qobj_to_dict() wird entfernt. Verwenden Sie stattdessen die Methode to_dict() eines Qobj-Objekts.

Visualisierung

Die größte Änderung des Visualisierungsmoduls besteht darin, dass es von qiskit.tools.visualization auf qiskit.visualization umgezogen ist. Dies wurde getan, um zu zeigen, dass das Visualisierungsmodul mehr als nur ein Werkzeug ist. Da diese Schnittstelle jedoch in der Version 0.7 für stabil erklärt wurde, wird die öffentliche Schnittstelle von qiskit.tools.visualization weiterhin funktionieren. Das kann sich in einer zukünftigen Version ändern, aber wenn das passiert, wird es vor der Entfernung veraltet sein.

Die zuvor veralteten Funktionen plot_circuit(), latex_circuit_drawer(), generate_latex_source() und matplotlib_circuit_drawer() aus qiskit.tools.visualization wurden entfernt. Anstelle dieser Funktionen sollte der Aufruf von qiskit.visualization.circuit_drawer() mit den entsprechenden Argumenten verwendet werden.

Die zuvor veralteten Schlüssel plot_barriers und reverse_bits im style kwarg-Wörterbuch sind veraltet, stattdessen sollten die qiskit.visualization.circuit_drawer() kwargs plot_barriers und reverse_bits verwendet werden.

Die Wigner-Plotting-Funktionen plot_wigner_function, plot_wigner_curve, plot_wigner_plaquette und plot_wigner_data , die bisher im Modul qiskit.tools.visualization._state_visualization enthalten waren, wurden entfernt. Sie wurden nie über die öffentliche stabile Schnittstelle veröffentlicht und waren nicht gut dokumentiert. Der Code zur Nutzung dieser Funktion kann weiterhin über das qiskit-tutorials Repository abgerufen werden.

Zuordnungsfunktion

Die öffentliche Api von qiskit.mapper wurde in qiskit.transpiler verschoben. Während es nur in dieser Version veraltet ist, wird es in der Version 0.9 entfernt werden. Wenn Sie also Ihre Verwendung von Layout und CouplingMap aktualisieren, um von qiskit.transpiler statt von qiskit.mapper zu importieren, bevor dies geschieht, vermeiden Sie in Zukunft Überraschungen.

Aer- 0.2

Neue Funktionen

  • Multiplexer-Gatter qiskit-aer #192 hinzugefügt
  • Funktion remap_noise_model zu noise.utils qiskit-aer #181 hinzugefügt
  • Methode __eq__ zu NoiseModel, QuantumError, ReadoutError hinzugefügt qiskit-aer #181
  • Unterstützung für beschriftete Gatter in Rauschmodellen hinzugefügt qiskit-aer #175
  • Optimierte mcx, mcy, mcz, mcu1, mcu2, mcu3, gates to QubitVector hinzugefügt qiskit-aer #124
  • Optimiertes Controlled-Swap-Gate zu QubitVector qiskit-aer #142 hinzugefügt
  • Gate-Fusion-Optimierung für QasmController hinzugefügt, die durch die Einstellung fusion_enable=true qiskit-aer #136 aktiviert wird
  • Bessere Verwaltung von fehlgeschlagenen Simulationen qiskit-aer #167
  • Optimierung des Abschneidens von Qubits für unbenutzte Qubits hinzugefügt qiskit-aer #164
  • Möglichkeit hinzugefügt, den Depolarisationsfehler beim Geräuschmodell qiskit-aer #131 zu deaktivieren
  • Initialisierungsanweisung für den Simulator zu statevector_state hinzugefügt qiskit-aer #117, qiskit-aer #137
  • Kopplungskarten zu Simulatoren hinzugefügt qiskit-aer #93
  • Schaltungsoptimierungs-Framework qiskit-aer #83 hinzugefügt
  • Benchmarking hinzugefügt qiskit-aer #71, qiskit-aer #177
  • Unterstützung von Laufrädern für Debian -ähnliche Distributionen hinzugefügt qiskit-aer #69
  • Automatische Konfiguration von Threads für den QASM-Simulator Qiskit-Aer #61 hinzugefügt
  • Simulationsmethode auf der Grundlage von Stabilisator-Rang-Zerlegungen hinzugefügt qiskit-aer #51
  • basis_gates kwarg zu NoiseModel init qiskit-aer #175 hinzugefügt.
  • Ein optionaler Parameter wurde zu NoiseModel.as_dict() hinzugefügt, um Dictionaries zurückzugeben, die mit der Standard-Json-Bibliothek direkt serialisiert werden können qiskit-aer #165
  • Überarbeitung der Thread-Verwaltung qiskit-aer #50
  • Verbesserung der Rauschtransformationen qiskit-aer #162
  • Verbesserung der Fehlermeldungen qiskit-aer #160
  • Verbesserung der Effizienz der Parallelisierung mit max_memory_mb ein neuer Parameter von backend_opts qiskit-aer #61
  • Verbesserung der Leistung von u1 in statevector qiskit-aer #123

Fehlerkorrekturen

  • OpenMP behebt Clashing-Probleme auf macOS für das Terra-Add-on qiskit-aer #46

Hinweise zur Kompatibilität

  • Veraltete "initial_statevector" Backend-Option für QasmSimulator und StatevectorSimulator qiskit-aer #185
  • Umbenennung der Backend-Option "chop_threshold" in "zero_threshold" und Änderung des Standardwertes in 1e-10 qiskit-aer #185

Ignis- 0.1

Neue Funktionen

  • Quantenvolumen
  • Abschwächung von Messungen mit Hilfe von Tensorkalibrierungen
  • Simultane RB bietet die Möglichkeit, Clifford-Gatter über Teilmengen hinweg auszurichten
  • Die Messwertkorrektur kann eine neue Kalibrierung für eine Teilmenge von Qubits ergeben

Hinweise zur Kompatibilität

  • RB schreibt in den minimalen Satz klassischer Register (früher war es Q [i] ->C [i] ). Diese Änderung ermöglicht eine Messwertkorrektur mit RB. Sofern die Nutzer nicht über einen externen Analysecode verfügen, wird dies nichts an den Ergebnissen ändern. RB-Schaltkreise von 0.1 sind nicht kompatibel mit 0.1.1 Installateuren.

Aqua- 0.5

Neue Funktionen

  • Implementierung des HHL-Algorithmus zur Unterstützung LinearSystemInput
  • Steckbare Komponente Eigenvalues mit Variante EigQPE
  • Steckbare Komponente Reciprocal mit den Varianten LookupRotation und LongDivision
  • Mehrfachkontrollierte U1 und U3 mcu1 und mcu3
  • Steckbare Komponente QFT abgeleitet von Komponente IQFT
  • Zusammenfassung der transpilierten Schaltungen auf der DEBUG-Protokollierungsebene
  • QuantumInstance nimmt basis_gates und coupling_map wieder an.
  • Unterstützung der Verwendung des cx Gatters für die Verschränkung in RY und RYRZ Variationsform (cz ist die Standardwahl)
  • Unterstützung für die Verwendung beliebiger Mischer-Hamiltonianer in QAOA, was die Verwendung von QAOA bei eingeschränkten Optimierungsproblemen ermöglicht [arXiv:1709.03489]
  • Variationsalgorithmus-Basisklasse VQAlgorithm hinzugefügt, implementiert durch VQE und QSVMVariational
  • ising/docplex.py zur automatischen Generierung der Ising-Hamiltonschen aus Optimierungsmodellen von DOcplex hinzugefügt
  • 'basic-dirty-ancilla' Modus hinzugefügt für mct
  • Hinzugefügt mcmt für Multi-Controlled, Multi-Target Gate
  • Offengelegte Fähigkeiten zur Erzeugung von Schaltkreisen aus logischen UND-, ODER-, DNF- (disjunktive Normalformen) und CNF-Formeln (konjunktive Normalformen)
  • Es wurde die Möglichkeit hinzugefügt, Schaltkreise aus ESOP-Formeln (exklusive Summe der Produkte) mit optionaler Optimierung auf der Grundlage von Quine-McCluskey zu erzeugen ExactCover
  • LogicalExpressionOracle zur Generierung von Orakelschaltungen aus beliebigen booleschen logischen Ausdrücken (einschließlich DIMACS-Unterstützung) mit optionaler Optimierungsmöglichkeit hinzugefügt
  • TruthTableOracle zur Erzeugung von Orakelschaltungen aus Wahrheitstabellen mit optionaler Optimierungsmöglichkeit hinzugefügt
  • CustomCircuitOracle zur Erzeugung von Orakeln aus benutzerdefinierten Schaltkreisen hinzugefügt
  • Implementierung des Deutsch-Jozsa-Algorithmus hinzugefügt
  • Implementierung des Bernstein-Vazirani-Algorithmus hinzugefügt
  • Implementierung des Simonschen Algorithmus hinzugefügt
  • Implementierung des Shor'schen Algorithmus hinzugefügt
  • Optionale Möglichkeit für Grovers Algorithmus, einen benutzerdefinierten Anfangszustand anzunehmen (im Gegensatz zur standardmäßigen einheitlichen Überlagerung)
  • Es wurde die Möglichkeit hinzugefügt, einen Custom Ausgangszustand unter Verwendung einer bestehenden Schaltung zu erstellen
  • Hinzufügen des Optimierungsalgorithmus ADAM (und AMSGRAD)
  • Multivariate Verteilungen hinzugefügt, so dass Unsicherheitsmodelle nun univariate und multivariate Verteilungskomponenten haben
  • Option hinzugefügt, um die Tauschoperationen für qft- und iqft-Schaltkreiskonstruktionen einzuschließen oder zu überspringen
  • Löser für klassische lineare Systeme hinzugefügt ExactLSsolver
  • Die Parameter auto_hermitian und auto_resize wurden zum Algorithmus HHL hinzugefügt, um nicht-hermitsche und nicht 2n2^n große Matrizen standardmäßig zu unterstützen
  • Es wurde eine weitere Merkmalskarte RawFeatureVector hinzugefügt, die Merkmalsvektoren direkt den Zuständen von Qubits zur Klassifizierung zuordnet
  • SVM_Classical kann jetzt Modelle laden, die von QSVM

Fehlerkorrekturen

  • ising/docplex.py korrigiert, um konstante Werte in Constraints korrekt zu multiplizieren
  • Paket-Setup korrigiert, um Namespace-Pakete korrekt zu identifizieren, indem setuptools.find_namespace_packages

Hinweise zur Kompatibilität

  • QuantumInstance nimmt nicht mehr memory .
  • Kommandozeile und GUI in separates Repo verschoben (qiskit_aqua_uis)
  • Das SAT-spezifische Orakel wurde entfernt (wird jetzt von LogicalExpressionOracle unterstützt)
  • Geänderte Implementierung von mct im Modus advanced : Verwendung von einfachen h Gattern anstelle von ch, und Korrektur des alten Rekursionsschritts in _multicx
  • Komponenten random_distributions umbenannt in uncertainty_models
  • Reorganisation der Konstruktionen verschiedener gemeinsamer Gatter (ch, cry, mcry, mct, mcu1, mcu3, mcmt, logic_and und logic_or) und Schaltungen (PhaseEstimationCircuit, BooleanLogicCircuits, FourierTransformCircuits und StateVectorCircuits) unter dem Verzeichnis circuits
  • Umbenennung des Algorithmus QSVMVariational in VQC, was für Variational Quantum Classifier steht
  • Umbenennung des Algorithmus QSVMKernel in QSVM
  • Umbenennung der Klasse SVMInput in ClassificationInput
  • Umbenennung des Problemtyps 'svm_classification' in 'classification'
  • Der in FeatureMap und VariationalForm verwendete Typ von entangler_map wurde in eine Liste von Listen geändert

IBM Q Anbieter 0.1

Neue Funktionen

  • Dies ist die erste Veröffentlichung als eigenständiges Paket. Wenn Sie Terra als Einzelplatzversion installieren, müssen Sie auch das Paket qiskit-ibmq-provider mit pip install qiskit-ibmq-provider installieren, wenn Sie die IBM Q-Backends verwenden möchten.
  • Die Unterstützung für Aufträge im Nicht-Qobj-Format wurde aus dem Anbieter entfernt. Sie müssen Einreichungen in einem älteren Format in Qobj konvertieren, bevor Sie sie einreichen können.
War diese Seite hilfreich?
Melden Sie auf GitHub einen Fehler, einen Tippfehler oder fordern Sie Inhalte an.