Je ne me serais pas attendu à une amélioration due à l'utilisation de pythran ; en effet ; on est dans le cas où l'on utilise des fonctions purement numpy comme : np.complex,np.min,np.max,np.abs. Il n'y a aucune boucle et aucune condition, on pourrait donc se dire que compiler ce programme n'est absolument pas nécessaire !!
Et pourtant ...
Temps execution :
Numpy : 3.19 ms
pythran sans vectorisation : 2.84 ms --> c'est déjà étonnant !
pythran avec vectorisation : 723 us soit un speedup de 4.4x !
Et je pense qu'ici, c'est juste l'aspect vectorisé même pas de parallélisation ! Je me demande quel serait le résultat en utilisant OpenMP sur un simple quad cœur.
Peux tu expliquer pourquoi il y a un speed-up sur pythran sans vectorisation ? Est-ce du au fait que tu fais moins de tests de dépassements pour les slices ?
Du coup, on passe de : je fais des choses compliquées, il faudrait que je fasse une lib avec pythran à Quoi que je fasse qui prenne du temps cela vaut toujours le coup de le faire avec pythran !
Honnêtement, je n'avais pas intégré cela. C'est vraiment révolutionnaire. Cela place python devant MatLab en terme de simplicité.
Pour rappel depuis de très longues années MATLab a permis de nettes améliorations de performances en utilisant la simple commande "mcc -m hello.m -a ./testdir", il était possible d'améliorer considérablement la vitesse de son programme, et cela était bien plus difficile sous python, il fallait utiliser cython, ce qui revenait à récrire totalement son programme. La numba et pythran sont arrivés, il permettent tous les deux des améliorations hallucinantes des performances avec des approches différentes. Pythran est beaucoup plus proche de ce que fait MATLab avec mcc et numba avec ses décorateurs et sa compilation à la volée permet de se poser encore moins de questions.
On arrive donc aujourd'hui à un écosystème aussi performant (voir plus sur certains points) qu'un monstre sacré dans le domaine scientifique comme MATLab.
C'est franchement une excellente nouvelle !
Peut être que dans quelques années il y aura une implémentation numpy API/ABI compatible purement en pythran !
Bon par contre On va tous t'en vouloir, car tu fais diminuer nettement le temps des pauses café !
# Expliciter l'intérêt
Posté par freejeff . En réponse au journal Pythran - 0.9.0 - kozhamzer. Évalué à 9. Dernière modification le 07 novembre 2018 à 09:04.
Salut,
J'ai du bien lire le pythran stories pour comprendre l'intérêt de ce travail et je pense que c'est vraiment intéressant.
Par exemple sur ce bout de code qui est entièrement vectorisé, qui devrait donc être optimal pour l'utilisation de numpy :
Je ne me serais pas attendu à une amélioration due à l'utilisation de pythran ; en effet ; on est dans le cas où l'on utilise des fonctions purement numpy comme : np.complex,np.min,np.max,np.abs. Il n'y a aucune boucle et aucune condition, on pourrait donc se dire que compiler ce programme n'est absolument pas nécessaire !!
Et pourtant ...
Temps execution :
Numpy : 3.19 ms
pythran sans vectorisation : 2.84 ms --> c'est déjà étonnant !
pythran avec vectorisation : 723 us soit un speedup de 4.4x !
Et je pense qu'ici, c'est juste l'aspect vectorisé même pas de parallélisation ! Je me demande quel serait le résultat en utilisant OpenMP sur un simple quad cœur.
Peux tu expliquer pourquoi il y a un speed-up sur pythran sans vectorisation ? Est-ce du au fait que tu fais moins de tests de dépassements pour les slices ?
Du coup, on passe de : je fais des choses compliquées, il faudrait que je fasse une lib avec pythran à Quoi que je fasse qui prenne du temps cela vaut toujours le coup de le faire avec pythran !
Honnêtement, je n'avais pas intégré cela. C'est vraiment révolutionnaire. Cela place python devant MatLab en terme de simplicité.
Pour rappel depuis de très longues années MATLab a permis de nettes améliorations de performances en utilisant la simple commande "mcc -m hello.m -a ./testdir", il était possible d'améliorer considérablement la vitesse de son programme, et cela était bien plus difficile sous python, il fallait utiliser cython, ce qui revenait à récrire totalement son programme. La numba et pythran sont arrivés, il permettent tous les deux des améliorations hallucinantes des performances avec des approches différentes. Pythran est beaucoup plus proche de ce que fait MATLab avec mcc et numba avec ses décorateurs et sa compilation à la volée permet de se poser encore moins de questions.
On arrive donc aujourd'hui à un écosystème aussi performant (voir plus sur certains points) qu'un monstre sacré dans le domaine scientifique comme MATLab.
C'est franchement une excellente nouvelle !
Peut être que dans quelques années il y aura une implémentation numpy API/ABI compatible purement en pythran !
Bon par contre On va tous t'en vouloir, car tu fais diminuer nettement le temps des pauses café !
Franchement, je suis vraiment scotché !