Les performances sont un des buts de Lisaac bien sûr.
Pour te donner l'anecdote, lors des premiers test du code mpeg2, lisaac était à 15% de l'exemple en C en utilisant gcc 2.95. Quelques années plus tard et une bonne dose d'optimisation de lisaac, l'exemple C est toujours 15% plus rapide. Pourquoi ?car gcc 4.3 donne du code 30% plus rapide que gcc 2.95.
Il est inutile de vouloir courir en parallèle de gcc, il sera toujours plus rapide. L'idée est de réutiliser au maximum ses avancés. Si on reste haut niveau, toutes les optimisations restent valable avec d'autres compilateurs.
La vectorisation est à la limite. Par exemple, gcc vient d'introduire Graphite ( http://en.wikipedia.org/wiki/Polytope_model ) pour réduire les boucles. C'est un an de boulot minimum pour l'intégrer dans un compilateur. Et pourtant les perspectives sont énormes en optimisation haut niveau (et avec des maths complexes). D'un autre coté, on utilise gcc et gcc utilise déjà cette optimisation. Pour lisaac, il "suffit" de produire du code gentil pour gcc (pas de pointeur, beaucoup de scalaire,...)
Il faut voir aussi que Ben fait de la recherche. Il ne peut pas "vendre" un papier sur une technologie avec autant de papier que l'auto-vectorisation.
Le projet a plus d'intérêt à partir sur des optimisations hors de porté de gcc. Par exemple, on pourrait faire la chasse au copie inutile ou au tableau temporaire.
[^] # Re: Surprise
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Lisaac: sorti de la 0.39beta. Évalué à 2.
Pour te donner l'anecdote, lors des premiers test du code mpeg2, lisaac était à 15% de l'exemple en C en utilisant gcc 2.95. Quelques années plus tard et une bonne dose d'optimisation de lisaac, l'exemple C est toujours 15% plus rapide. Pourquoi ?car gcc 4.3 donne du code 30% plus rapide que gcc 2.95.
Il est inutile de vouloir courir en parallèle de gcc, il sera toujours plus rapide. L'idée est de réutiliser au maximum ses avancés. Si on reste haut niveau, toutes les optimisations restent valable avec d'autres compilateurs.
La vectorisation est à la limite. Par exemple, gcc vient d'introduire Graphite ( http://en.wikipedia.org/wiki/Polytope_model ) pour réduire les boucles. C'est un an de boulot minimum pour l'intégrer dans un compilateur. Et pourtant les perspectives sont énormes en optimisation haut niveau (et avec des maths complexes). D'un autre coté, on utilise gcc et gcc utilise déjà cette optimisation. Pour lisaac, il "suffit" de produire du code gentil pour gcc (pas de pointeur, beaucoup de scalaire,...)
Il faut voir aussi que Ben fait de la recherche. Il ne peut pas "vendre" un papier sur une technologie avec autant de papier que l'auto-vectorisation.
Le projet a plus d'intérêt à partir sur des optimisations hors de porté de gcc. Par exemple, on pourrait faire la chasse au copie inutile ou au tableau temporaire.
"La première sécurité est la liberté"