• [^] # Re: Performance des compilateurs libres

    Posté par (site web personnel, Mastodon) . En réponse au journal Des nouvelles de Fortran. Évalué à 10.

    Voici un benchmark récent de divers compilateurs Fortran :
    https://polyhedron.com/?page_id=175
    qui montre que gfortran ne se débrouille globalement pas plus mal que la plupart des compilateurs commerciaux. Maintenant, c'est compliqué les benchmarks : ça dépend des problèmes mathématiques utilisés, des options choisies pour chaque compilateur, des microprocesseurs sur lesquels ont les utilise (sans parler de clusters de machine), etc.

    Personnellement, j'ai longtemps utilisé les ancêtres d'Intel Fortran, en particulier Compaq Visual Fortran, et depuis une douzaine d'années j'utilise principalement gfortran. J'avais acheté Intel Fortran 2015, mais finalement pour les problèmes qui m'intéressent (basés souvent sur la résolution de gros systèmes d'équations différentielles, sur un bon PC), je me suis rendu compte que suivant les problèmes gfortran pouvait être un peu plus rapide qu'Intel ou le contraire, avec des différences en général inférieures à 10 %. Bon, quand on est à 10 % de différence, c'est peu. Même pour un calcul qui dure 10h, c'est vrai qu'on est content de gagner une heure, mais ça n'est pas non plus déterminant pour le choix d'un compilateur. Les compilateurs commerciaux n'implémentent pas forcément plus vite les nouvelles normes Fortran et finalement si on veut bénéficier des nouveautés, au bout d'un an ou deux il faut ressortir le porte-monnaie.

    A noter que dans les benchmarks, il faut aussi se méfier des versions des compilateurs. Dans le cas de gfortran, sur mon Ubuntu j'ai gfortran-4.8, gfortran-5, gfortran-7, gfortran-8 et gfortran-9 ! J'ai un script python qui me permet de tester sur mon problème chaque version avec différentes options ou groupes d'options (-O3, -Ofast, -march=native, -mtune=native...) et je sais d'expérience que la dernière version n'est pas forcément la plus rapide : parfois oui, parfois non. Le numéro de version mineure a aussi son importance : j'ai en ce moment la 7.5, la 8.4 et la 9.2. Comme leur nom l'indique la 7.5 et la 8.4 ont été plus longuement déboguées. Quand une nouvelle version majeure vient de sortir, par exemple x.0 ou x.1, on peut parfois être déçu. Enfin, on est généralement à des différences de l'ordre de 5 %, parfois 10 %.

    En tout cas, j'attends la sortie de Flang (LLVM 11 ?) car il est toujours bon d'avoir plusieurs compilateurs, d'une part pour choisir le plus rapide, d'autre part parce que ça permet d'améliorer la qualité du code (certains compilateurs vont détecter des petits problèmes que d'autres ne verront pas).