AccueilActualités informatiqueNumPy 1.22 se rapproche de la norme API pour tableaux Python

NumPy 1.22 se rapproche de la norme API pour tableaux Python

L’équipe NumPy a publié la version 1.22 de la bibliothèque Python. La bibliothèque open source dédiée aux opérations matricielles et au calcul numérique introduit dans cette dernière version un certain nombre de nouvelles fonctionnalités et d’améliorations – dont une version préliminaire de l’API des tableaux et un backend DLPack. Selon les notes de publication, 153 personnes au total ont participé au développement de la dernière version avec un total de 609 pull requests inclus. NumPy 1.22 requiert au moins Python 3.8 et fait donc ses adieux à toutes les versions du langage de programmation, y compris la 3.7 et les versions antérieures.

Sommaire

Les annotations pour l’espace de nommage principal de NumPy sont considérées comme terminées. Dans le cadre de la discussion sur un système de type pour NumPy, l’équipe de développement avait introduit dans la version 1.20 les premières annotations de type pour différents domaines de la bibliothèque et avait développé le module numpy.typing a été complété. Parmi les autres sous-paquets auxquels des annotations ont été ajoutées depuis lors, on peut citer numpy.testing, numpy.linalg et numpy.random.

L’implémentation d’une norme API de tableau Python, également proposée dans le NEP 47 pour NumPy, vise à améliorer l’interopérabilité des librairies de tableaux/tenseurs pour échanger du code entre NumPy et TensorFlow, PyTorch, Dask, JAX, CuPy ou MXNet. NumPy 1.22 fournit maintenant une première version provisoire de l’API pour les tableaux. Comme la norme est encore à l’état d’ébauche, les règles suivantes s’appliquent numpy.array_api est encore expérimentale. L’équipe NumPy crée ainsi les conditions préalables à la création d’une collection standard de fonctions pouvant être utilisées dans toutes les applications. En complément, NumPy met à disposition un format d’échange commun pour les données Array (Tensor) via un nouveau backend pour DLPack.

Pour la première fois, la bibliothèque Python pour le calcul scientifique peut être utilisée avec des plates-formes cibles Windows/arm64, alors qu’OpenBLAS (Basic Linear Algebra Subprograms) n’offre pas encore officiellement de support pour ces cibles. En outre, près de 20 fonctions du module umath ont été vectorisées à l’aide de la bibliothèque Short Vector Math Library (SVML) d’Intel et du jeu d’instructions AVX-512 pour des implémentations à simple et double précision. Les différentes fonctions angulaires et logarithmiques devraient ainsi être accélérées d’un facteur 32 (Single Precision) ou 14 (Double Precision). Pour l’instant, seuls les utilisateurs de NumPy sous Linux sur des systèmes équipés de processeurs utilisant l’AVX-512 peuvent en profiter.

Sur le modèle du PEP 585 pour la bibliothèque standard de Python, les classes ndarray, dtype et number pour utiliser la méthode de classe __class_getitem__ a été ajoutée. Les expressions qui n’étaient jusqu’à présent disponibles que dans les fichiers stub .pyi ou à l’aide de la commande from __future__ import annotations sont désormais autorisées à l’exécution.

>>> import numpy as np
>>> from typing import Any

>>> np.ndarray[Any, np.dtype[np.float64]]
numpy.ndarray[typing.Any, numpy.dtype[numpy.float64]]

Un aperçu complet de toutes les nouveautés et améliorations de NumPy 1.22 est disponible dans les notes de version sur GitHub.

Plus d'articles