URL: https://linuxfr.org/users/serge_ss_paille/journaux/pythran-a-scipy2013 Title: Pythran à Scipy2013 ! Authors: serge_sans_paille Date: 2013年06月04日T12:18:05+02:00 License: CC By-SA Tags: pythran et python Score: 37 Ô joie, le compilo [Pythran](http://pythonhosted.org/pythran/) dont les évolutions sont suivies par une foule Linuxienne en délire, a droit de citer lors de la grand messe annuelle du Python scientifique, [Scipy2013](http://conference.scipy.org/scipy2013/), plus exactement [là](http://conference.scipy.org/scipy2013/presentation_detail.php?id=136). Un grand merci à vous tous qui répondez, critiquez, hurlez, piaillez dans les différents journaux pythranesques, ça m'aide beaucoup pour la motivation, et aussi pour améliorer les choses. Comme le défi Pythran, c'est d'avoir de la perf en gardant la syntaxe Python, et vu que ça intéresse pas mal d'entre vous, je reproduit ici les résultats que je présenterai là bas (les plus curieux liront [l'article complet](https://github.com/serge-sans-paille/scipy_proceedings/blob/2013/papers/serge_guelton/serge_guelton.rst)): Petite note : les benchs ont été faits sur mon portable, 8 core i7 (dont 4 hyperthreadés), `g++` version 4.7.3. Sur le programme Pystone, digne héritier de [whetstone](http://fr.wikipedia.org/wiki/whetstone "Définition Wikipédia") et de don homoloque-au-nom-en-forme-de-gag [dhrystone](http://fr.wikipedia.org/wiki/dhrystone "Définition Wikipédia"): +---------+-------------+---------------+------------+------------+ | Tool | CPython | Pythran | PyPy | ShedSkin | +---------+-------------+---------------+------------+------------+ | Timing | 861ms | 11.8ms | 29.1ms | 24.7ms | +---------+-------------+---------------+------------+------------+ | Speedup | x1 | x72.9 | x29.6 | x34.8 | +---------+-------------+---------------+------------+------------+ Sur le calcul des n-reines [sources](http://code.google.com/p/unladen-swallow/source/browse/tests/performance/bm_nqueens.py) +---------+-------------+---------------+------------+------------+ | Tool | CPython | Pythran | PyPy | ShedSkin | +---------+-------------+---------------+------------+------------+ | Timing | 1904.6ms | 358.3ms | 546.1ms | 701.5ms | +---------+-------------+---------------+------------+------------+ | Speedup | x1 | x5.31 | x3.49 | x2.71 | +---------+-------------+---------------+------------+------------+ Sur un calcul de géomatique déjà présenté dans un précédent journal, en utilisant des listes de listes : +---------+-------------+---------------+------------+------------+ | Tool | CPython | Pythran | PyPy | ShedSkin | +---------+-------------+---------------+------------+------------+ | Timing | 1295.4ms | 270.5ms | 277.5ms | 281.5ms | +---------+-------------+---------------+------------+------------+ | Speedup | x1 | x4.79 | x4.67 | x4.60 | +---------+-------------+---------------+------------+------------+ Le même calcul, en utilisant des tableaux numpy +---------+-------------+---------------+------------------+ | Tool | CPython | Pythran | Pythran+OpenMP | +---------+-------------+---------------+------------------+ | Timing | 450.0ms | 4.8ms | 2.3ms | +---------+-------------+---------------+------------------+ | Speedup | x1 | x93.8 | x195.7 | +---------+-------------+---------------+------------------+ Un bench numpy classique à base d'expressions [sources](https://bitbucket.org/FedericoV/numpy-tip-complex-modeling) : +---------+-------------+----------+-------------+-----------+ | Tool | CPython | Cython | Numexpr | Pythran | +---------+-------------+----------+-------------+-----------+ | Timing | 192.2ms | 36.0ms | 41.2ms | 17.1ms | +---------+-------------+----------+-------------+-----------+ | Speedup | x1 | x5.33 | x4.67 | x11.23 | +---------+-------------+----------+-------------+-----------+ Et le détail du bench précédent, pour Pythran +---------------+----------------+----------------+-----------------+ | Pythran (raw) | Pythran (+AVX) | Pythran (+OMP) | Pythran (full) | +---------------+----------------+----------------+-----------------+ | 186.3ms | 75.4ms | 41.1ms | 17.1ms | +---------------+----------------+----------------+-----------------+ | x1.03 | x2.54 | x4.67 | x11.23 | +---------------+----------------+----------------+-----------------+ On peut donc humblement dire que notre énôôôrme équipe de [2](http://ridee.enstb.org/sguelton/compas.png) dev (+1 nouveau et sans oublier les contributions de quelques joyeux teubreux) qui bossent le soir en plus de leurs activités familiales ou estudiantines met bien la nique aux autres, ensuite on retombe sur terre et on se rappel que Pythran n'est pas aussi stable / pas avec la même couverture de Python, m'enfin ça fait plaisir quand même. Et puis on fera une sortie stable d'ici la fin du mois avec un support partiel de numpy, disons 200 fonctions de l'API standard, grâce au financement de [Silkan](http://www.silkan.com/) que je remercie chaleureusement pour leur soutient ! Et le top du top, c'est que les gentils zorgas de Scipy nous invitent, et ça, c'est la clâââsse !