Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1140 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Coder un nouveau compilateur C++

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Coder un nouveau compilateur C++

n°1957206
glandingst​yle
Posté le 12-01-2010 à 15:29:13  profilanswer
 

Salut à tous  :hello: ,  
 
Je vais commencer sec :
Je suis actuellement sur un projet: j'essaies de refaire un compilateur du début à la fin.
 
Je sais que il existe beaucoup de documentation pour cela, mais je vous demande vos idées, vois pistes pour débuter.
Je veux faire un compilateur qui parallèliserais automatiquement le code (sur CUDA notamment).
Le compilateur devra alors trouver les possibilités de parallèlisme du langage C++ pour les exploiter (boucles for indépendantes,calculs parallelisables ...).
 
Et pour un maximum d'adaptabilité, je voudrais qu'on puisses préciser l'architecture de l'ordinateur sur lequel le futur programme est censé s'éxécuter (nombre de coeurs, instructions supportées, traduction de ces instructions, nombre/taille des registres) dans un document.
Pour optimiser le parallèlisme d'instructions. :sleep:  :sleep: ... On se réveille !
 
Ce compilateur n'est pas pensé pour une architecture x86 banale.
 
A l'heure actuelle, je sais que un compilateur marche de la manière suivante : précompilateur, puis, génération de code intermédiaire, suivi par une optimisation sur ce premier code, et enfin, élaboration du code assembleur.
 
Pour commencer, Existe t'il un programme qui ne ferais que de précompiler ?
Et rendrais un texte contenant uniquement le code source ?
 
Je pensais a l'algorithmie suivante pour la partie optimisation:  
 
   - Identifier/Isoler les parties du codes qui peuvent s'executer Out of Order
   - Regrouper les instructions qui pour raison évidente doivent être regroupées
   - Effectuer des simulation (calcul de cycles nécessaires) pour le reste
 
Le compilo  :ange:  prendrais en entrée:  
 
   - Le code source a compiler
   - un fichier contenant les données d'architectures du processeur
   - un fichier contenant le jeu d'instructions du processeur, ses equivalents en x86 plus ou moins, et le temps éexecution
 
Qu'en pensez vous ?
 
Je sais que il existe déjà HMPP http://www.caps-entreprise.com/fr/ [...] =49&p_p=36 pour la partie de parallèliser le code, mais je ne sais pas si il existe un compilo qui optimises selon l'architecture.
 
Merci pour votre aide  :jap:

mood
Publicité
Posté le 12-01-2010 à 15:29:13  profilanswer
 

n°1957213
theshockwa​ve
I work at a firm named Koslow
Posté le 12-01-2010 à 15:49:19  profilanswer
 

tous les compilos optimisent suivant l'architecture, c'est aussi leur boulot. Ensuite, préciser à la compilation le nombre de cores, ca me semble pas être une bonne idée du tout : tu compiles pour un dual core et ca fait que tous ceux qui ont des quad ne peuvent pas en tirer parti ?
Et l'efficacité de la parallélisation automatique me semble relever de la pure croyance. mieux vaut penser ses algos et les paralléliser soi-même


---------------
last.fm
n°1957218
glandingst​yle
Posté le 12-01-2010 à 15:58:21  profilanswer
 

theshockwave a écrit :

tous les compilos optimisent suivant l'architecture, c'est aussi leur boulot. Ensuite, préciser à la compilation le nombre de cores, ca me semble pas être une bonne idée du tout : tu compiles pour un dual core et ca fait que tous ceux qui ont des quad ne peuvent pas en tirer parti ?
Et l'efficacité de la parallélisation automatique me semble relever de la pure croyance. mieux vaut penser ses algos et les paralléliser soi-même


 
Le principe est que j'aimerais porter du code sur autre choses que des core2duo ou core quad, je voudrais que mon compilateur compile aussi bien sur des architectures cell par exemple, ou x86, ou encore powerpc, ...
Et puis, je voudrais obtenir systématiquement le maximum de performances pour l'architecture cible. Ici, ce dont tu parles est de faire un compromis portabilité/performance. Je m'intéresse là à du code haute performance.
 
Je suis d'accord que la parallélisation passez surtout par le codeur, mais est ce si invraisemblable de détecter des codes qui soient parallèlisables dans un programme automatiquement ?
 
Sinon, si les compilos optimisent suivant l'architecture, comment en définir une nouvelle à GCC ou mingW par exemple ?
 
Tu ne connaitrais pas un précompilateur que l'on pourrais utiliser indépendamment de son compilateur ?
Et un parser/interpreter de code C++ ?


Message édité par glandingstyle le 12-01-2010 à 16:03:11
n°1957224
theshockwa​ve
I work at a firm named Koslow
Posté le 12-01-2010 à 16:10:09  profilanswer
 

je n'ai pas tout ce qu'il faut sous le coude pour te répondre, mais m'est avis que tu trouveras pas mal de choses à lire, par exemple, par ici : http://gcc.gnu.org/wiki/GettingStarted (notamment avec une explication détaillée sur comment écrire ton propre back end pour GCC)


---------------
last.fm
n°1957239
glandingst​yle
Posté le 12-01-2010 à 16:54:03  profilanswer
 

theshockwave a écrit :

je n'ai pas tout ce qu'il faut sous le coude pour te répondre, mais m'est avis que tu trouveras pas mal de choses à lire, par exemple, par ici : http://gcc.gnu.org/wiki/GettingStarted (notamment avec une explication détaillée sur comment écrire ton propre back end pour GCC)


 
 
Merci bcp.
Je n'arrives pas à trouver un document compréhensible sur GIMPLE le language intermédiaire de GCC une idée ?

n°1957253
Joel F
Real men use unique_ptr
Posté le 12-01-2010 à 17:36:12  profilanswer
 

tu sais qu'y a genre 50 equipes de chercheurs à plein la dessus ... et que bon, le pb de la compilation parallele est NP-hard :€
Je te conseillerais plutot de sauter dnas le wagon CLang//LLVM que de reinventer la roue

 

Quant à CUDA, passes au moins à oepnCL si tu veux avoir l'air crédible


Message édité par Joel F le 12-01-2010 à 17:44:20

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Coder un nouveau compilateur C++

 

Sujets relatifs
Utiliser des fonctions C# pour Excel[C#][DirectInput] Programmation d'un joystick
socket flux breakpoint C++TP de C et IPC
développement .net C# ou .net visual basic ??écrire en C des algorithmes de graphes !! Please HELP !!
[C++] Compteur de temps qui ne fait pas "pause"Lien entre algorithme et language C
C ou C++ ?[PHP] Comment coder un moteur de recherche sur mon site ?
Plus de sujets relatifs à : Coder un nouveau compilateur C++


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR