Skip to main content
IBM Quantum Platform

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 module qiskit.providers.fake_provider telles que FakeMontrealV2, où les valeurs pour les champs dtm et dt et de l'attribut associé Target.dt n'é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ètre indices contenant des éléments non nuls. Auparavant, les tirs dont la représentation hexadécimale du résultat était suffisamment petite pouvaient soulever un ValueError. Voir #8044.

  • L'exportateur OpenQASM 3 (qiskit.qasm3) produira désormais les déclarations input ou output avant 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 RZXCalibrationBuilder où 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é sur BackendV2-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 RZXCalibrationBuilder qui faisait que les impulsions étaient parfois construites avec des durées incorrectes. Voir #7994.

  • La passe SabreSwap transpiler pass, utilisé dans transpile() lorsque routing_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.

  • Statevector permettra désormais l'itération directe à travers ses valeurs (telles que for coefficient in statevector) et indiquera correctement sa longueur sous len. Auparavant, il essayait d'accéder à des données hors limites et soulevait une erreur de type QiskitError. 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é UCPauliRotGate dans 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, ou UCRZGate (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, XXPlusYYGate a 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ée XXMinusYYGate.

Corrections des erreurs

  • Fixe Clifford, Pauli et CNOTDihedral l'initialisation de l'opérateur à partir de circuits compatibles contenant des Delay instructions. 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 argument quantum_state était de type StateFn. eval_observables prend 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éthode DAGCircuit.draw() où le tiroir échouait lorsqu'il tentait de générer une visualisation pour un objet DAGCircuit qui contenait un objet Qubit ou Clbit qui ne faisait pas partie d'un QuantumRegister ou d'un ClassicalRegister. 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 QuantumInstance utilisée par de nombreux algorithmes (comme VQE) 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'attribut wait dans l'initialisateur du fichier QuantumInstance.

  • Correction d'un problème avec la fonction schedule où les appelants spécifiant un list d'objets QuantumCircuit avec une seule entrée renvoyait à tort un seul objet Schedule au lieu d'un list.

  • Correction d'un problème avec la fonction de visualisation plot_error_map qui 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 fourni BackendProperties ou lorsqu'elle était exécutée avec un BackendV2 backend. 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 Pauli est donnée à la méthode init_observables().

  • Fixe SabreSwapet par extension transpile() avec optimization_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, SabreSwap pouvait (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 SabreSwap et par extension SabreLayout et transpile() à l'adresse optimization_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 fonction UCRXGate, UCRYGate, et UCRZGate . 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.metadata est activé. L'attribut metadata peut ê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'attribut QuantumCircuit.metadata n'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'objet qiskit.result.Result sans 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é options lorsque vous soumettez un travail Qiskit Runtime avec la méthode qiskit.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é image dans la méthode qiskit.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.RuntimeEncoder et qiskit.providers.ibmq.runtime.RuntimeDecoder ont é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.RuntimeEncoder et qiskit.providers.ibmq.runtime.RuntimeDecoder ont été mis à jour pour gérer ces ndarrays.
Cette page a-t-elle été utile ?
Signaler un bogue, une coquille ou proposer du contenu sur GitHub.