Posté par neil .
En réponse au journal Pythran revient de SciPy2013.
Évalué à 1.
Dernière modification le 16 juillet 2013 à 18:06.
NumPy est rapide pour certaines opérations déjà optimisées dans BLAS et encodées en dur dans la bibliothèque, mais est assez lent pour tout le reste, y compris des choses basiques comme les convolutions. Rien que le fait que ce soit du pur Python (à l’utilisation, pas la bibliothèque en elle-même qui est en C) est déjà lent, il y a l’évaluation paresseuse qui manque (quand on écrit b + c + d il fait une copie mémoire pour b + c, puis encore une opération et une allocation pour le + d). Ensuite il y a le problème du parallélisme qui n’est pas géré (mais c’est général en Python).
L’avantage des bibliothèques comme Pythran (et comme le dit serge_paille en dessous), c’est de passer par une étape intermédiaire qui va appliquer tout un tas d’optimisations avant l’exécution (la liste en dessous pour Pythran est impressionnante : AVX, OpenMP, évaluation paresseuse [dans un autre sens], constant folding, ...). L’un des gros avantages de Pythran c’est d’être compatible avec NumPy, ce qui est top pour pouvoir développer et partager du code rapidement (sous-entendu, par copier/coller, ce qui est l’outil fondamental des langages non-typés :p), et permet d’avoir une courbe d’apprentissage douce. En gros ça rajoute une partie de l’étape « compilation » qui manque à un langage de script.
[^] # Re: Theano
Posté par neil . En réponse au journal Pythran revient de SciPy2013. Évalué à 1. Dernière modification le 16 juillet 2013 à 18:06.
NumPy est rapide pour certaines opérations déjà optimisées dans BLAS et encodées en dur dans la bibliothèque, mais est assez lent pour tout le reste, y compris des choses basiques comme les convolutions. Rien que le fait que ce soit du pur Python (à l’utilisation, pas la bibliothèque en elle-même qui est en C) est déjà lent, il y a l’évaluation paresseuse qui manque (quand on écrit
b + c + dil fait une copie mémoire pourb + c, puis encore une opération et une allocation pour le+ d). Ensuite il y a le problème du parallélisme qui n’est pas géré (mais c’est général en Python).L’avantage des bibliothèques comme Pythran (et comme le dit serge_paille en dessous), c’est de passer par une étape intermédiaire qui va appliquer tout un tas d’optimisations avant l’exécution (la liste en dessous pour Pythran est impressionnante : AVX, OpenMP, évaluation paresseuse [dans un autre sens], constant folding, ...). L’un des gros avantages de Pythran c’est d’être compatible avec NumPy, ce qui est top pour pouvoir développer et partager du code rapidement (sous-entendu, par copier/coller, ce qui est l’outil fondamental des langages non-typés :p), et permet d’avoir une courbe d’apprentissage douce. En gros ça rajoute une partie de l’étape « compilation » qui manque à un langage de script.