Journal GCC 4.0 et 3.4 et optimisations SSE

Posté par  .
Étiquettes : aucune
0
26
avr.
2005
On entend ce ci, de là pas mal de rumeurs sur les performances des nouvelles versions de GCC.
Bien que je ne doute pas du talent des codeurs de cette pierre angulaire du logiciel libre, néanmoins, il est raisonnable de penser que chaque nouvelle version ne relègue pas aux oubliettes les anciennes, et que toute nouvelle fonctionnalité met du temps à être peaufinée.
Voici donc deux benchmarks de la génération de code SSE sur P4.
Il me me semblent dignes de confiance, et testent GCC-3.4.4 contre GCC-4.0 sur le logiciel de lancé de rayons Povray:
GCC-3.4.4: http://gcc.gnu.org/ml/gcc/2005-01/msg01424.html(...)
GC-4.0: http://gcc.gnu.org/ml/gcc/2005-01/msg01344.html(...)

Le plus intéressant, à mon sens, est l'analyse des résultats, qui explique pourquoi avec telle ou telle version du compilateur les performances sont différentes.

J'ai trouvé ce benchmark sur le Wiki GCC trafic: http://gcc.gnu.org/wiki/GCC%20Traffic%20%28news%29(...) sur lequel on peut trouver un tas d'informations sur les nouvelles optimisations à naître dans la branche 4.1 de GCC.

Bonne lecture!
  • # Un autre benchmark intéressant ICC VS GCC -3.x et 4.0

    Posté par  . Évalué à 4.

    Un autre benchmark intéressant, de Scott Robert Ladd: http://www.coyotegulch.com/reviews/linux_compilers/index.html(...)
    On y apprend que GCC n'est pas ridicule lorsqu'il n'est pas utilisé sur une plateforme Intel, et qu'apparemment les binaires obtenus avec ICC sont capables de se saborder eux-même s'ils sont exécutés sur une plateforme non-intel:
    Intel's compiler also produces executable code that disables some of its optimizations on non-Intel hardware. It's unrealistic to expect that Intel will create a compiler that works well on their competitor's hardware.

    C'est vraiment diabolique, d'autant qu'on peut se demander ce qui se passera quand on voudra exécuter le même binaire sur les nouveaux Pentium XX, et que la détection de la plateforme échouera probablement.
    Rien que pour ça, ça vaut le coup de préférer GCC! ;-)
    • [^] # Re: Un autre benchmark intéressant ICC VS GCC -3.x et 4.0

      Posté par  . Évalué à 3.

      en meme temps, dans son comparatif il utilise gcc 4.0.0-20040915 qui est au mieux un gcc-4.0-preXX. Peut etre que la release finale apporte un gain en perf. Il y a quand meme 7 mois d'ecart entre les deux! J'espere qu'il y aura une mise a jour de son bench, car il semble bien fait.
      • [^] # Re: Un autre benchmark intéressant ICC VS GCC -3.x et 4.0

        Posté par  . Évalué à 7.

        J'y connais pas grand chose et j'ai pas (pris) le temps de lire tout ça mais....

        J'ai cru comprendre que la version 4.0 n'apportait pas d'améliorations des performences par contre les modifications d'architecture du compilateur devrait permettre de mettre en place certains type d'optimisations.

        Je sais mon commentaires est flou, mais je vous avais prévenu, je n'y connais rien!
        • [^] # Re: Un autre benchmark intéressant ICC VS GCC -3.x et 4.0

          Posté par  . Évalué à 8.

          C'est a peut prés cela. En fait GCC 4.0 apporte une nouvelle architecture globale avec des niveaux d'abstraction supplémentaire lors de la compilation du code, avent la compilation du C et de l'ADA par exemple n'utilisait pas les même mécanisme de compilation, certaines optimisation n'était utilisé que pour un langage, même chose pour certaines fonctionnalités codé en dur etc etc...
          GCC 4.0 remet tous a plat et crée en quelque sorte une base saine et universel quelque soit le langage la plateforme etc etc ... En soit le fait que GCC 4.0 soit aussi efficasse que le 3.x est un très bon signe cela veut dire que la plus part de « tricks » des version précédentes ont put être intégré proprement, ce qui ouvre donc la porte a de nouvelles optimisation jusque la impossible ( vectorialisation automatique etc etc ).
    • [^] # Re: Un autre benchmark intéressant ICC VS GCC -3.x et 4.0

      Posté par  (site web personnel) . Évalué à 6.

      Je ne sais pas si cela a évoluer mais lors de la sortie de icc, celui-ci était meilleur que gcc dans la gestion des flottants.

      En effet, gcc est purement basé sur des registres or les instructions x87 sont basés sur une pile. Icc est fait pour x86 quand gcc supporte des dizaines d'architectures différentes.

      Les testes de l'époques montraient l'utilisation abusive par gcc de l'instruction qui manipule la pile x87 pour la voir comme des registres. A prioris, cela ne devait pas changer car optimiser une sortie pour une pile n'avait rien à voir avec une optimisation basé sur des registres.

      De plus, le 86 était encore le seul à utiliser cette téchnique et les instructions SSE s'éloignaient de ce principe.

      "La première sécurité est la liberté"

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.