URL: https://linuxfr.org/users/serge_ss_paille/journaux/pythran-0-9-2-koailh Title: Pythran 0.9.2 - koailh Authors: serge_sans_paille Date: 2019年05月06日T07:36:58+02:00 License: CC By-SA Tags: pythran, python et numpy Score: 19 Demat' iNal, C'est avec délectation que je t'annonce la sortie de la révision 0.9.2 du compilateur [pythran](https://github.com/serge-sans-paille/pythran). Pythran est un compilateur pour les noyaux de calcul écrits en Python, compatible avec un (large) sous-ensemble de Python. Il comprend les annotations OpenMP et est capable de générer des instructions vectorielles grâce à [xsimd](https://github.com/QuantStack/xsimd). La dernière sortie date de plus de 4 mois, donc pas mal de nouveautés sont au rendez vous. La liste complète est consultable [en ligne](https://pythran.readthedocs.io/en/latest/Changelog.html). Changements majeurs =================== En plus des correctifs de bug et de la prise en charge de nouvelles fonctions de [numpy](https://github.com/numpy/numpy), on peut noter une nouvelle syntax plus concise pour décrire les arguments optionnels dans les annotations Pythran : ```python #pythran export foo(int, int?) ``` Cette notation étant équivalente à : ```python #pythran export foo(int) #pythran export foo(int, int) ``` Cette *release* introduit également une dépendance vers le nouveau paquet [beniget](https://github.com/serge-sans-paille/beniget) qui fournit une analyse de *use-def chains* pour Python. Avoir un paquet externe m'a forcé à mieux tester l'ensemble, on peut espérer une meilleur stabilité du tout. Une fuite mémoire importante lors de la traduction d'une vue étendue sur un tableau depuis Pythran vers Python a été détectée et corrigée. Au final, c'est [43 tickets](https://github.com/serge-sans-paille/pythran/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aclosed+closed%3A%3E2019-01-20+) qui ont été fermés depuis la version 0.9.1 \o/ Exemple ======= Comme d'habitude, j'aime bien illustrée Pythran a travers un petit code qui ne compile que depuis la nouvelle version. Le code suivant a été [glané sur Stackoverflow](https://stackoverflow.com/questions/55854611/efficient-way-of-vectorizing-distance-calculation/) et bénéficie d'une accélération d'un facteur 6 sans *xsimd* jusqu'à 9 avec *xsimd* et des accès contigus en mémoire. ```python import numpy as np #pythran export f_dist(float64[:,:], float64[:,:]) #pythran export f_dist(float64[::,::], float64[::,::]) def f_dist(X1, X2): return np.sum(np.abs(X1[:, None, :] - X2), axis=-1) ``` Téléchargement ============== Pythran est disponible - sur PyPI : https://pypi.org/project/pythran/ - sur GitHub : https://github.com/serge-sans-paille/pythran - sur Anaconda, pour Linux, OSX et Windows *via* conda-forge : https://anaconda.org/conda-forge/pythran Remerciements ============= Les personnes suivantes ont contribué à cette version, à travers des rapports de bug ou des patchs - l'ordre est aléatoire : - Yann Diorcet - Neal Becker - Ashwin Vishnu - David Menéndez Hurtado - Jean Laroche - Anubhab Haldar - Thierry Dumont - "keke ge-smile" - "garanews" - Said Hadjout - Rodrigo Iga - Pierrick Brunet - Franck Cornevaux-Juignet On notera que ces deux derniers lascars sont mentionnés ici pour avoir reporté des bugs en 2013 et 2014, bugs qui ne sont corrigés qu'avec cette version ;-) Je me permets également un remerciement particulier à Pierre Augier pour son support et le boost de motivation qu'il apporte au projet. Contribuez ========== Il existe plein de façon de contribuer au projet ! Les rapports de bugs et/ou les patchs sont toujours appréciés. Un petit message, par courriel ou dans les commentaires de ce journal, c'est une petite étincelle de joie ! Utiliser le projet et le faire utiliser autour de soi aide aussi beaucoup. Et si vous avez envie d'influencer les développements futurs, parlez-en sur la [liste de diffusion](https://www.freelists.org/list/pythran) ou, si vous êtes timides, contactez-moi. *Ce journal est une traduction libre de l'[annonce officielle](https://www.freelists.org/post/pythran/Pythran-092-koailh) avec quelques petits ajouts parce que, bon, c'est plus agréable dans sa langue maternelle*

AltStyle によって変換されたページ (->オリジナル) /