• [^] # Re: Performance des compilateurs libres

    Posté par . En réponse au journal Des nouvelles de Fortran. Évalué à 2.

    La libc, c'est effectivement pour les interactions avec le système (allocations mémoire, i/o, ...). Mais ça représente quoi sur un programme de résolution d'équation ?

    Tout dépend du programme. Si ça joue sur des fonctions trigonométrique, gfortran va employer, entre autres, la bibliothèque libquadmath. Ce qui veut dire que l'on code en Fortran ou en C ça ne change que sur l'ergonomie puisque C l'utilise aussi. (Voir ce commentaire sur les bibliothèques invoquées depuis gfortran.) Si ça joue sur d'autres choses mathématiques qui ne sont pas dans libquadmath, un programme pourra invoquer une bibliothèque spécialisée comme la bien connue blas qui a aussi une déclinaison en C (cblas). Une liste des bibliothèques numériques ici.

    Le compilateur Fortran fera la différence en ce que c'est son cœur de métier contrairement à C. Fortran à une approche algébrique des choses et il fait parfaitement la différence entre un entier négatif, zéro et un entier positif. Fortran, par défaut, compte à partir de un. Le langage C, par défaut, compte à partir de zéro ; il est plutôt orienté sur la logique. Voir aussi ce commentaire.

    Si la tâche s'exécute en quelques secondes sur un seul cœur, on n'est pas dans le domaine du calcul intensif. À la limite, si l'on veut triturer des équations déjà disponibles en bibliothèque, peu importe le langage. Mais si on doit faire chauffer les processeurs pendant plusieurs heures, voire plusieurs jours ou même plusieurs semaines comme ça se voit dans de très grands centre de calcul, on ne peut pas occulter le rôle primordial des systèmes d'exploitation. D'où une influence de la qualité de la libc sur les performance globales.

    Par exemple, 10 % de différence de perf sur un job de 10 heures ça commence à compter au niveau de la facture d'électricité et de l'immobilisation du matériel. Si on est sur une station de travail dont on est le seul utilisateur, on peut s'en ficher puisque l'on fera tourner le soft pendant la nuit. Et puis la consommation d'électricité passera en frais généraux. Mais si on est sur un cluster de plusieurs centaines de nœuds, c'est facturé !

    Je ne peux absolument pas répondre à la question de jusqu'à quel point la libc influence les performances car je ne fais pas de calcul intensif. C'est pourquoi j'aimerais que ceux qui en font livrent leur témoignage. Ce type de témoignage n'est pas évident à trouver car le calcul intensif se pratique soit au profit d'une entreprise (protégée par le secret des affaires ou le secret industriel), soit au profit du monde militaire (protégé par le secret défense) ou des labos publiques où la communication est encadrée.

    À noter, qu'à l'extrême opposé du calcul intensif, les micro-services hébergés dans le Cloud sont facturés au temps de fonctionnement et que la libc musl a une bonne réputation pour les containers (particulièrement avec la distro Alpine Linux qui l'emploie).