Journal gcc et multiprocessor

Posté par  .
Étiquettes : aucune
0
10
juin
2003
est-il possible d'optimiser la compilation avec gcc sur une machine multiprocesseurs, un utilisant justement les deux processeurs?
Si oui cela se fait il a la compilatyion de gcc lui meme en mettant une option lors de son configure ou alors est-ce une option que l'on pass à gcc lors de la compilation d'un programme??
  • # Re: gcc et multiprocessor

    Posté par  . Évalué à 1.

    précision/autre question:
    je parle de la prise en charge deu multiprocesseur aussi bien par gcc lui même lors de compilation ainsi que par le programme compilé si il peut gérer le multiprocceseurs?
    • [^] # Re: gcc et multiprocessor

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

      make -j pour la compile parallele, gcc lui-même n'est pas multi-threadé. Pour le programme regarde du côté d'openmp (supporté par icc qui a une option de parallelisation automatique (certainement merdique), mais pas gcc)
      • [^] # Re: gcc et multiprocessor

        Posté par  . Évalué à 1.

        euh si tu as une option multhreadé - --pthread - ne serait pas cela pour qu'il utilise plusieurs threads
        • [^] # Re: gcc et multiprocessor

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

          euh oui mais non, l'option -pthread c'est pour compiler un source qui utilise les pthreads. Un compilateur multi-threadé n'aurait que très peu d'intéret à mon sens puisque généralement on compile plus d'un fichier, et que ces compilations peuvent être réalisées en parallèle sans le moindre effort.
          • [^] # Re: gcc et multiprocessor

            Posté par  . Évalué à 3.

            Ça a été étudié fut un temps : voir la thèse de Fischer http://historical.ncstrl.org/tr/ps/cornellcs/TR75-237.ps(...) ou l'article de Schell ; voir un résumé sur comp.compilers : http://compilers.iecc.com/comparch/article/90-10-111(...) .

            Le très gros intérêt c'est que ces méthodes exploitent naturellement des méthodes non canoniques (les réductions ne se font pas forcément dans l'ordre de la chaîne d'entrée) et permettent donc d'analyser des grammaires qui auraient été rejetées par un analyseur LALR(1) comme bison ou yacc. C'est-à-dire que beaucoup de conflits disparaissent et qu'on dispose d'une écriture plus naturelle de la grammaire.

            Le défaut ce serait que de toute façon de nos jours les fichiers sont assez courts et qu'il est plus simple de lancer des threads différents sur des fichiers différents avec make -j. Sans compter que le non canonique n'a jamais vraiment pris en pratique (à part chez quelques irréductibles dont je fais partie).
      • [^] # Re: gcc et multiprocessor

        Posté par  . Évalué à 3.

        Attention, il vaut mieux specifier le nombre maximum de process simultanes lors de la compilation.

        Il y a un an, j'avais fait un make -j au lieu de mon make -j2 ... Bilan, machine freezee (bon, ok, gcc-2.96 sur un Itanium, donc situation limite "prototype")
  • # Re: gcc et multiprocessor

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

    make -j n
    pour lancer plusieur compile en // (gcc -MM fichiers.c ... toto.c pour générer le makefile)

    Et pour la parralélisation automatique de code, il n'y a rien, il faut se faire les threads à la mains. (c'est pas comme Erlang)

    Je crois qu'il existe un Front-end libre japonnais à Gcc pour compiler de l'OpenMp qui permet de rajouter des #pragma pour aider à compiler en multithreadé.

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

  • # Re: gcc et multiprocessor

    Posté par  . Évalué à 2.

    Tu veux accélér la compilation je suppose ?
    Pour les gros projets, utilise un cache :
    http://ccache.samba.org/(...)
    Et si tu as plusieurs machines, distribue la compilation sur les machines:
    http://distcc.samba.org(...)

Suivre le flux des commentaires

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