IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

GCC Discussion :

Parall�liser le fonctionnement de GCC


Sujet :

GCC

  1. #1
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2008
    Messages
    26 772
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - Multim�dia et Internet

    Informations forums :
    Inscription : Ao�t 2008
    Messages : 26 772
    Par d�faut Parall�liser le fonctionnement de GCC
    Les compilateurs C++ sont souvent d�cri�s pour leur lenteur, notamment dans le cas de gros fichiers source. Cela est notamment d� � leur fonctionnement en s�rie : ils ont �t� con�us � une �re o� les processeurs multic�urs �taient rares (par exemple, GCC a d�but� son existence en 1987). Depuis lors, l�am�lioration de performance des processeurs ne se fait plus par une augmentation de fr�quence, mais plut�t du nombre de c�urs. La question de la parall�lisation devient donc plus pressante. C�est notamment pourquoi LLVM retravaille certaines parties de son infrastructure pour �tre mieux exploit� en contexte multifil.

    Un projet GSoC (Google summer of code) a consist� en l��tude de la parall�lisation d�une partie des op�rations de GCC, plus particuli�rement la partie interm�diaire du compilateur, celle qui s�occupe d�effectuer des optimisations du code ind�pendantes du processeur cibl� (cette phase se passe sur la repr�sentation interm�diaire GIMPLE). La partie interm�diaire prend une quinzaine de pour cent du temps d�ex�cution total sur un fichier de test (gimple-match.c, qui repr�sente 100 358 lignes de code C++). Cette phase se passe en deux temps : les optimisations intraproc�durales (optimiser une fonction sans consid�rer ses interactions avec d�autres) et interproc�durales (avec les interactions, appel�es IPA par GCC : inter process analysis).

    L�architecture propos�e des optimisations se base sur une file producteur-consommateur pour chaque passe d�optimisation, chaque fil d�ex�cution pouvant prendre un �l�ment dans cette file. De la sorte, si toutes les fonctions � optimiser sont bien �quilibr�es, on peut esp�rer diviser le temps d�ex�cution par le nombre de c�urs disponibles.


    Le r�sultat est assez int�ressant : en passant d�un � huit fils d�ex�cution (le processeur de test disposant de quatre c�urs), le temps complet d�ex�cution des optimisations est divis� par 2,52 (au vu des parties qui ne sont pas parall�lis�es, on pouvait esp�rer un facteur th�orique de 2,7). Le temps complet de compilation ne descend que de neuf pour cent. En appliquant la m�me technique aux optimisations sp�cifiques aux processeurs (en travaillant au niveau RTL plut�t que GIMPLE), les gains sont plus marqu�s, cette partie repr�sentant une portion plus importante du temps de compilation : on peut gagner soixante et un pour cent en temps d�ex�cution en utilisant huit fils d�ex�cution !


    Ces d�veloppements ne sont pas encore int�gr�s dans le code de GCC, mais cela devrait arriver, au vu des gains que l�on peut esp�rer. Une parall�lisation plus fine pourrait encore diminuer les temps de compilation.

    Source : pr�sentation GNU Cauldron 2019.
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Cr�er des applications graphiques en Python avec PyQt5
    Cr�er des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  2. #2
    Membre averti
    Femme Profil pro
    D�veloppeur de jeux vid�o
    Inscrit en
    D�cembre 2017
    Messages
    60
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    �ge : 33
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activit� : D�veloppeur de jeux vid�o

    Informations forums :
    Inscription : D�cembre 2017
    Messages : 60
    Par d�faut
    Je vois que �a parle de make -j dans leurs slides, mais o� est le gain par rapport � �a dans une situation r�elle ? C'est pas clair, �a s'�tale sur les gains de perfs par rapport � un seul fichier, dont la taille est d�j� en soi une erreur � ne pas commettre. On gagnerait plus de temps de compilation � le s�parer en plusieurs fichiers, sans pour autant tomber dans l'extr�me inverse o� on passe plus de temps � multiplier les process et � linker qu'� effectuer la compilation.

    Est-ce qu'on a vraiment besoin de parall�liser GCC ou est-ce que c'est juste un projet de recherche ? Personnellement quand je veux compiler un projet, j'enl�ve cette maudite option -j parce que j'ai envie de faire autre chose en attendant et que j'appr�cie pas trop le ventilateur.

Discussions similaires

  1. SDL ne fonctionne pas avec GCC version 4
    Par hbx360 dans le forum SDL
    R�ponses: 6
    Dernier message: 16/04/2015, 17h24
  2. R�ponses: 1
    Dernier message: 03/09/2011, 14h01
  3. commande gcc qui ne fonctionne pas
    Par bilinemiline dans le forum Autres �diteurs
    R�ponses: 4
    Dernier message: 24/02/2010, 17h00
  4. R�ponses: 13
    Dernier message: 15/02/2009, 19h37
  5. champs de bits dans une structure - option de gcc pour bon fonctionnement
    Par matdakillah dans le forum RedHat / CentOS / Fedora
    R�ponses: 1
    Dernier message: 08/10/2008, 12h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo