Notes de publication de Qiskit 0.36
0.36.2
Terra 0.20.2
Prélude
Qiskit Terra 0.20.2 est une version de correction de bugs, corrigeant quelques problèmes mineurs identifiés depuis la dernière version du patch.
Corrections des erreurs
-
Correction d'un problème avec les fausses classes de backend basées sur
BackendV2-basé sur de fausses classes backend du moduleqiskit.providers.fake_providertelles queFakeMontrealV2, où les valeurs pour les champsdtmetdtet de l'attribut associéTarget.dtn'étaient pas correctement converties en secondes. Cela poserait des problèmes lors de l'utilisation de ces faux backends dans le cadre de la programmation. Voir #8018. -
marginal_counts()réussira désormais à marginaliser la mémoire avec un paramètreindicescontenant des éléments non nuls. Auparavant, les tirs dont la représentation hexadécimale du résultat était suffisamment petite pouvaient soulever unValueError. Voir #8044. -
L'exportateur OpenQASM 3 (
qiskit.qasm3) produira désormais les déclarationsinputououtputavant les déclarations de porte. Ceci est plus cohérent avec la grammaire ANTLR de référence actuelle de l'équipe OpenQASM 3. Voir #7964. -
Correction d'un bogue dans la passe de
RZXCalibrationBuilderoù l'amplitude de l'impulsion de résonance croisée mise à l'échelle pouvait apparaître comme étant paramétrée même après l'affectation. Cela pourrait amener les outils de visualisation des impulsions à utiliser le format paramétré au lieu du format numérique attendu. Voir #8031. -
Correction d'un problème avec la fonction
transpile()lorsqu'elle est exécutée avec un backend basé surBackendV2-et en définissant l'argument du mot-cléscheduling_method. Auparavant, la fonction ne traitait pas correctement les durées par défaut des instructions prises en charge par le backend, ce qui entraînait une erreur. -
Correction d'un bug dans la passe de
RZXCalibrationBuilderqui faisait que les impulsions étaient parfois construites avec des durées incorrectes. Voir #7994. -
La passe
SabreSwaptranspiler pass, utilisé danstranspile()lorsquerouting_method="sabre"est activé, n'abandonnera plus sporadiquement les portes conditionnées classiquement et leurs successeurs dans les circuits pendant la phase de routage de la transpilation. Voir #8040. -
Statevectorpermettra désormais l'itération directe à travers ses valeurs (telles quefor coefficient in statevector) et indiquera correctement sa longueur souslen. Auparavant, il essayait d'accéder à des données hors limites et soulevait une erreur de typeQiskitError. Voir #8039.
Aer 0.10.4
Pas de modification
Ignis 0.7.1
Prélude
Il s'agit d'une version de correction de bogues qui corrige principalement un problème d'empaquetage qui faisait que le répertoire docs/ , qui contient les fichiers sources utilisés pour construire la documentation de qiskit-ignis, était inclus dans le paquet Python.
IBM 0.19.1 du fournisseur Q
Pas de modification
0.36.1
Terra 0.20.1
Prélude
Qiskit Terra 0.20.1 est une version de correction de bogues qui résout les problèmes identifiés dans la version 0.20.0.
Problèmes connus
-
Désérialisation QPY avec la fonction
qpy.load()d'un objet directement instanciéUCPauliRotGatedans un circuit échouera parce que l'argument de l'axe de rotation de la classe n'est pas stocké dans un endroit standard. Pour contourner ce problème, vous pouvez utiliser les sous-classes :UCRXGate,UCRYGate, ouUCRZGate(selon que vous utilisez un axe de rotation de"X","Y", ou"Z"respectivement) qui incorpore l'axe de rotation dans le constructeur de la classe et fonctionnera correctement dans QPY. -
Depuis son introduction initiale dans Qiskit Terra 0.20,
XXPlusYYGatea utilisé une convention d'angle négatif par rapport à toutes les autres portes de rotation. Dans Qiskit Terra 0.21, ce point sera corrigé pour être cohérent avec les autres portes de rotation. Cela n'affecte pas les autres portes de rotation, ni les portes d'entréeXXMinusYYGate.
Corrections des erreurs
-
Fixe
Clifford,PaulietCNOTDihedrall'initialisation de l'opérateur à partir de circuits compatibles contenant desDelayinstructions. Ces instructions sont traitées comme des identités lors de la conversion en opérateurs. -
Correction d'un problème où la fonction
eval_observables()soulevait une erreur si son argumentquantum_stateétait de typeStateFn.eval_observablesprend désormais correctement en charge tous les types d'entrée indiqués par ses indications de type. -
Correction d'un problème avec la fonction de visualisation
dag_drawer()et la méthodeDAGCircuit.draw()où le tiroir échouait lorsqu'il tentait de générer une visualisation pour un objetDAGCircuitqui contenait un objetQubitouClbitqui ne faisait pas partie d'unQuantumRegisterou d'unClassicalRegister. Correction #7915. -
Correction de la validation des paramètres pour la classe
Drag. Auparavant, il n'était pas sensible aux grandes valeurs bêta avec des signes négatifs, ce qui pouvait se traduire par des échantillons de forme d'onde dont la valeur maximale dépassait la limite d'amplitude de 1.0. -
La classe
QuantumInstanceutilisée par de nombreux algorithmes (commeVQE) codait en dur la valeur d'une mise en veille pendant qu'elle tournait en boucle en attendant que l'état de la tâche soit mis à jour. Il respecte désormais la valeur de sommeil configurée par l'attributwaitdans l'initialisateur du fichierQuantumInstance. -
Correction d'un problème avec la fonction
scheduleoù les appelants spécifiant unlistd'objetsQuantumCircuitavec une seule entrée renvoyait à tort un seul objetScheduleau lieu d'unlist. -
Correction d'un problème avec la fonction de visualisation
plot_error_mapqui l'empêchait de fonctionner lorsqu'elle était exécutée avec un backend dont l'erreur de lecture était définie dans les paramètres du backend fourniBackendPropertiesou lorsqu'elle était exécutée avec unBackendV2backend. Correction #7879. -
Correction d'un bogue qui pouvait entraîner une durée d'exécution exponentielle et une non-terminaison lorsqu'une instance de
Pauliest donnée à la méthodeinit_observables(). -
Fixe
SabreSwapet par extensiontranspile()avecoptimization_level=3, qui réordonne parfois les mesures de manière invalide. Auparavant, si deux mesures écrivaient sur le même bit classique, elles pouvaient (en fonction de la carte de couplage) être réorganisées pour produire un circuit non équivalent,SabreSwappouvait (en fonction de la carte de couplage) les réordonner pour produire un circuit non équivalent. Ce comportement était stochastique et n'était donc pas forcément fiable. Corrigé #7950 -
La passe
SabreSwapet par extensionSabreLayoutettranspile()à l'adresseoptimization_level=3, dispose désormais d'un mécanisme d'échappement garantissant qu'il ne peut jamais être bloqué dans une boucle infinie. Certaines entrées pouvaient auparavant, avec beaucoup de malchance, rester bloquées dans un minimum local stable de l'espace de recherche et la passe ne progressait plus. Il forcera désormais une série d'échanges qui permettront au routage de se poursuivre s'il détecte qu'il n'a pas progressé récemment. Correction #7707. -
Correction d'un problème avec la désérialisation QPY via la fonction
qpy.load()de la fonctionUCRXGate,UCRYGate, etUCRZGate. Auparavant, un fichier QPY contenant l'une de ces portes provoquait une erreur lors du chargement du fichier. Correction #7847.
Aer 0.10.4
Pas de modification
Ignis 0.7.0
Pas de modification
IBM 0.19.1 du fournisseur Q
0.19.1
Corrections des erreurs
- PR #1129 met à jour la méthode
least_busy()pour qu'elle ne supporte plus BaseBackend comme type d'entrée ou de sortie valide puisqu'il a été déprécié depuis longtemps dans qiskit-terra et a été récemment supprimé.
0.36.0
Terra 0.20.0
Pas de modification
Aer 0.10.4
Mise à niveau
- Qiskit Aer n'est plus compilé avec des optimisations non sûres en virgule flottante. Alors que la plupart des effets auraient dû être localisés à Qiskit Aer, certains aspects de la gestion subnormale peuvent avoir été divulgués dans le code de l'utilisateur par la bibliothèque qui a incorrectement défini le mode "flush to zero". Cela ne se produira plus.
Corrections des erreurs
-
Correction du transpileur de blocage de cache pour reconnaître que le superop est bloqué en cache. Il s'agit de la correction du problème 1479 <https://github.com/Qiskit/qiskit-aer/issues/1479>. Il est désormais possible de paralléliser la matrice de densité avec des modèles de bruit. Un nouveau test, test_noise.TestNoise.test_kraus_gate_noise_on_QFT_cache_blocking est ajouté pour vérifier ce problème. Ce correctif inclut également la correction du problème 1483 <https://github.com/Qiskit/qiskit-aer/issues/1483> découvert par l'ajout d'un nouveau cas de test. Ceci fixe la mesure sur les chunks pour le vecteur d'état.
-
Corrige un bogue dans
NoiseModel.from_backend()qui provoquait une erreur lorsque T2 valeur supérieure à 2 * T1 était fournie par le backend. Après cette correction, il devient possible de tronquer la valeur de T2 jusqu'à 2 * T1 et d'émettre un avertissement à l'utilisateur si la valeur est tronquée. Le bogue a été introduit au #1391 et, avant cela,NoiseModel.from_backend()avait tronqué la valeur de T2 jusqu'à 2 * T1 silencieusement.Voir le numéro 1464 pour plus de détails.
-
device=Thrust était très lent pour un petit nombre de qubits parce que OpenMP threading était toujours appliqué. Ce correctif s'applique à OpenMP threads de la même manière que device=CPU en utilisant statevector_parallel_threshold.
-
Qiskit Aer ne définit plus le mode de virgule flottante à "flush to zero" lorsqu'il est chargé. Les utilisateurs en aval ont pu voir auparavant des avertissements de Numpy tels que :
La valeur de la plus petite sous-norme pour le type <class ‘numpy.float64’> est zéro.
Elles ne seront plus émises et la gestion des nombres à virgule flottante sera correcte.
-
Correction d'un problème potentiel lors de l'exécution de simulations sur des circuits ayant l'attribut
QuantumCircuit.metadataest activé. L'attributmetadatapeut être n'importe quel dictionnaire python et auparavant, qiskit-aer essayait de sérialiser en JSON le contenu de l'attribut pour le traiter avec le reste de l'entrée du circuit, même si le contenu n'était pas sérialisable en JSON. Cela ne se produit plus car l'attributQuantumCircuit.metadatan'est pas utilisé pour exécuter la simulation, de sorte que le contenu n'est pas sérialisé et qu'il est directement attaché à l'objetqiskit.result.Resultsans essayer de sérialiser le contenu en JSON. Corrigé #1435
Ignis 0.7.0
Pas de modification
IBM 0.19.0 du fournisseur Q
Nouvelles fonctions
- Le paquet qiskit-ibmq-provider prend désormais en charge les fonctionnalités de IBM Quantum LiveData. Ces fonctionnalités permettent aux utilisateurs d'observer le comportement en temps réel des backends de IBM Quantum pendant l'exécution des tâches. Plus précisément, le fournisseur inclut désormais un nouvel onglet dans le widget Jupyter du backend et prend en charge l'exécution de travaux (via la méthode
qiskit.providers.ibmq.IBMQBackend.run()) avec le paramètre live_data_enabled=True dans les backends IBM Quantum autorisés. - Vous pouvez désormais spécifier un niveau de journalisation différent dans le mot-clé
optionslorsque vous soumettez un travail Qiskit Runtime avec la méthodeqiskit.providers.ibmq.runtime.IBMRuntimeService.run().
Mise à niveau
- Python 3.6 a été supprimée car elle est arrivée en fin de vie en décembre 2021.
- qiskit.providers.ibmq.random le service de numéros aléatoires utilisé pour accéder à l'extracteur d'aléas du CQC n'est plus pris en charge et a été supprimé.
Remarques concernant la dépréciation
- Le mot-clé
imagedans la méthodeqiskit.providers.ibmq.runtime.IBMRuntimeService.run()est obsolète. Vous devez plutôt spécifier l'image à utiliser dans le mot-cléoptions.
Corrections des erreurs
- Corrige le problème #190. Les sites
qiskit.providers.ibmq.runtime.RuntimeEncoderetqiskit.providers.ibmq.runtime.RuntimeDecoderont été mis à jour pour gérer les instances de la classe Instruction. - Corrige le problème #74 où les ndarrays numpy avec des types d'objets ne pouvaient pas être sérialisés.
qiskit.providers.ibmq.runtime.RuntimeEncoderetqiskit.providers.ibmq.runtime.RuntimeDecoderont été mis à jour pour gérer ces ndarrays.