Changes between Initial Version and Version 1 of reunion-2009-07-16


Ignore:
Timestamp:
Aug 24, 2009, 4:17:05 PM (15 years ago)
Author:
coach
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • reunion-2009-07-16

    v1 v1  
     1{{{
     2COMPTE RENDU DE LA RÉUNION DU 16 Juillet 2009
     3
     4-----------------------------------------------------------------
     5
     6La réunion avait pour objectif de définir (A) l'interfaçage entre GCC et
     7les outils développés dans le cadre du projet COACH et (B) la définition
     8du format d'un CDFG généré par GCC.
     9Elle s'est terminée par un nombre d'actions pour la prochaine réunion (C).
     10
     11-----------------------------------------------------------------
     12A) interfaçage entre GCC et les outils de synthèse
     13
     14Il existe dans la dernière version de GCC un langage nommé
     15PCP qui permet d'externaliser certaines informations (les SCOP) sur les
     16boucles à partir du format interne de GCC (format nommé GIMPLE).
     17Il a étét conclus que ce langage ne serait pas utilisé mais que seule la
     18detection des SCOP fournie par Graphite serait utilisée pour annoter directement
     19GIMPLE (en interne ?) et obtenir notre CDFG au format XML (des balises seront
     20utilisées pour repérer les SCOP).
     21
     22Le CDFG généré par GCC au format XML contiendra les SCOP
     23
     24
     25C-Tuning et I.C.I seront utilisés pour diriger la compilation et l'ordre
     26des passes d'optimisation faite dans GCC. Ceci permettra de faire la
     27detection des scop en dernier dans le flot de compilation.
     28
     29L'utilisation de Graphite pour transformer les boucles sera possible
     30(ca ne coute rien).
     31
     32Le Flot serait le suivant
     33
     34C => GCC piloté par ICI => CDFG_1 => moulinette => CDFG_2
     35
     36 Définition d'un unique format CDFG qui servira a décrire un modele CDFG_1
     37 proche de Gimple (pour etre le plus indépendant de GCC) et un CDFG_2 qui sera
     38 plus simple que CDFG_1. Il faudra donc développer un outil pour passer de
     39CDFG_1 à CDFG_2.  CDFG_1 et CDFG_2 contiennent les SCOP.
     40
     41Exemple de transformation réalisées dans la moulinette pour passer
     42de CDFG_1 vers CDFG_2 
     43 - suppression des pointeurs
     44 - linéarisation des tableaux
     45 - Transformation des Inout des paramètres des fonctions en in out out
     46   avec usne analyse de dependance de données durant la transformation de
     47   CDFG_1 vers CDFG_2
     48
     49 Linéarisation/délinéarisation des tableaux
     50
     51 Suppression/transformation des pointeurs statiquement determinable
     52 (passage par référence uniquement ?)
     53
     54-----------------------------------------------------------------
     55B) Définition du format général du CDFG
     56
     57 FIGURE:
     58   - un nom
     59   - un ensemble de FIGURES
     60   - un ensemble de VARIABLES
     61   - un GRAPHE de BB (Basic Bloc)
     62   - un ensemble de PARAMETRES
     63
     64 VARIABLE:
     65   - un nom
     66   - un type
     67   les types sont:
     68     * signé + bit-size
     69     * non-signé + bit-size
     70     * virgule fixe (signe/non-signé, bit-size, position de la virule,
     71       arrondi)
     72     * les pointeurs ( CDFG_1 uniquement)
     73     * les strctures des types précédents et suivants.
     74     * les tableaux à 1 ou plusieurs dimensions des types précédents.
     75
     76PARAMETRE:
     77   - une variable
     78   - un attribut: in, out inout
     79
     80 GRAPHE de BB:
     81    - un ensemble de BB
     82   
     83 BB:
     84   - un identifiant
     85   - une suite linéaire d'instruction chaque BB contient un AST proche
     86     du format défini par Paul. La linéarisation des tableaux sera faite
     87     à priori sur le format CDFG et non dans GCC (si c'est une passe
     88     d'optimisation de GCC alors est-elle faisable en dernier via I.C.I ?
     89     Dominique doit confirmer)
     90   - un ensemble de couples (condition, identifiant de BB).
     91   - liste(s?) des variables utilisées en entrée et sortie du BB (si gimple
     92     le fournit oui sinon non . Dominique doit confirmer)
     93
     94Quelques précisons:
     95    a) la portée des variables (SCOPE)
     96       gcc a applatit le graphe => les données appartiennent à la figure
     97       la plus proche (concrètement:  1 SCOPE par fonction + 1 SCOPE global).
     98       Chaque fonction a ses propores variables et il existe des variables
     99       globales (en dehors du main). En cas de conflits, la variable la plus
     100       locale gagne (règle ANSI).
     101       Les données seront préfixées par le nom de la fonction pour éviter les
     102       problèmes.
     103       Conservation des frontières de dominances fournies par gcc qui permettra
     104       de passer en mode SSA ou alors utilisation des PHY-fonction pour faire
     105       la même chose.
     106    b) appel de fonction:
     107       cas 1:  mise en ligne => no problem
     108       cas 2:  le BB contient une instruction d'appel à une figure avec les
     109               paramètres.
     110               Un appel de fonction peut-il être dans un BB avec d'autres
     111               instructions?
     112    c) si
     113       un BB peut avoir plusieurs BB successeurs. 2 comme dans Gimple
     114       ou avec des arcs parallèle exprimé par des jumps ou des
     115       if elsif elif .. ou switch.
     116    d) boucle
     117       BLOC HIERARCHIQUE qui suit le format de GIMPLE des boucles.
     118       (à préciser).
     119
     120-----------------------------------------------------------------
     121C) ACTION pour la prochaine réunion
     122
     123  - Dominique redigera un petit doc pour prendre en main GIMPLE ou savoir où
     124  aller chercher l'information pour prendre en main ce format.
     125
     126  - Proposition d'une DTD ou d'un schema du CDFG (Paul & Ivan)
     127  Evocation d'une utilisation d'un "double chainage" (BB => BB + flow de controle)
     128
     129  - Un serveur TRACK pour avoir un WIKI (LIP6 ?)
     130    URL:    https://www-soc.lip6.fr/trac/coach/
     131    LOGIN:  coach
     132    PASSWD: co!a!ch
     133
     134  - Un doodle pour la prochaine réunion fin Septembre, début Octobre.
     135
     136
     137
     138}}}