Compilation avancée: analyse de programmes, optimisations de code.

Slides:



Advertisements
Présentations similaires
Électronique de base du processeur
Advertisements

PC / Traitement numérique / Contrôle Environnement logiciel
Placement de Motifs Architecture Application Contraintes: - Charge
Tests et Validation du logiciel
Architecture de machines Le microprocesseur
Jacques Lonchamp IUT Nancy Charlemagne – DUT Informatique 1A
Chargé de recherches au CNRS
Algorithmique du Network Calculus Participants : Laurent Jouhet et Eric Thierry Le Network CalculusLes objetsLes opérations Etat de lartObjectifs Premiers.
Objectif de l’exposé.
Le jeu d ’instructions Introduction Un jeu d ’instruction classique
Bibliothèques Scientifiques
Informatique parallèle hautes performances
Modèle polyédrique: fondements et application à la parallélisation de programmes réguliers Tanguy Risset DIF 2001/2002.
Introduction : Compilation et Traduction
Architecture de machines Principes généraux
CALCUL PARALLELE PRODUIT : MATRICE – VECTEUR 10 pages Exposé par :
1 ARCHITECTURE DACCÈS la méthode générale modèle de données définitions module daccès / modules métiers construction des modèles les modules daccès, les.
Architectures et systèmes à microprocesseurs – ELEC288
Architecture et technologie des ordinateurs II
RESUMES Module II1 SOMMAIRE CYCLE 1 : Saisir – Afficher – Données
ALGORITHMIQUE en classe de seconde
Structure de la famille de DSP Motorola 56300
Architecture des Ordinateurs
Optimisation et parallélisation de code pour processeur à instructions SIMD multimedia François Ferrand.
Les systèmes multiprocesseurs Ph. Sèvre le 19/12/08.
MOT Éditeur de modèles de connaissances par objets typés
Introduction Objectifs du cours Évaluation Références
Gei 431 Architecture des ordinateurs II – Frédéric Mailhot Systèmes Pipeline – opérations multicycles Nous avons vu jusquà maintenant comment faire un.
Systèmes Superscalaires et VLIW
Semaine #1 INF135 par Frédérick Henri.
Détection du meilleur format de compression pour une matrice creuse dans un environnement parallèle hétérogène Olfa HAMDI-LARBI.
Procédures et fonctions
L’adaptativité pour un solveur de l’équation de Vlasov
Lycée ELKHAWARIZMI De SAFI
Processeurs et chemins des données
PROJET CAPS Compilation, Architecture, Processeurs Superscalaires et Spécialisées.
Amélioration de la simulation stochastique
INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel Processeurs sous-RISC et application aux réseaux Quand.
Présentation rapide d’
8INF856 Programmation sur architectures parallèles
André Seznec Caps Team IRISA/INRIA 1 Processeurs Hautes Performances Panorama et Nouveaux Défis André Seznec IRISA/INRIA
INF8505: processeurs embarqués configurables
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Encodage du jeu d’instructions.
Les systèmes mono-puce
Un outil d’estimation du temps d’exécution au pire-cas par analyse statique de programmes IRISA - Projet Solidor Antoine COLIN.
L’architecture du processeur Xtensa de Tensilica
Journées d'études Faible Tension Faible Consommation 14, 15, 16 mai Gwenolé CORRE, Nathalie JULIEN, Eric SENN, Eric MARTIN LESTER, Université de.
ARPO: architecture des processeurs superscalaires,VLIW et optimisation André Seznec et François Bodin.
Le langage Racket (Lisp)
PROJET CAPS Compilation, Architecture, Parallélisme et Système.
INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel Conception de processeurs – partie 2 Approches traditionnelles.
Construction d'une hiérarchie mémoire faible consommation
1 IFT 099 Introduction à la programmation. 2 Plan du cours (sem. 1) 1.Introduction - les ordinateurs 2.La programmation procédurale 3.La programmation.
Projet de Fin d’Etudes – Optimisation SSE 1/28. 1) Présentation du Stage 2) Les instructions SSE 3) Algorithme DSP Audio Conclusion 2/28 Projet de Fin.
2008/ Plan du cours 1.Introduction –Contenu du cours 2.Logique mathématique –Calcul propositionnel –Calcul des prédicats –Logique floue et aide à.
1 École des Mines de Saint-Etienne. 158, cours Fauriel Saint-Etienne Cedex 2. Tél Fax Jean-Jacques Girardot
Introduction et Généralités sur l’Algorithmique
Simulation de jeux d’instructions à hautes performances
Architecture et technologie des ordinateurs II
Optimisation pour la Conception de Systèmes Embarqués
PROJET CAPS Compilation, Architecture, Processeurs Superscalaires et Spécialisées.
PROJET CAPS Compilation, Architecture, Processeurs Superscalaires et Spécialisées.
ARPO: architecture des processeurs superscalaires,VLIW et optimisation André Seznec et François Bodin.
PROJET CAPS Compilation, Architecture, Parallélisme et Système.
Patricia Renault UPMC 2005/2006
Création et Optimisation de Modules Audio avec les instructions SSE
Pipeline 1 Amélioration des performances par la technique du pipeline.
M1Info-ASE 1 Pipeline logiciel. M1Info-ASE 2 Pipeline logiciel Le déroulage de boucle a ses limites Approcher des perf optimales  facteurs de déroulage.
ARCHITECTURE MATERIELLE D’UN SYSTEME A MICROPROCESSEUR
Département Informatique L’optimisation Laurent JEANPIERRE IUT de CAEN – Campus 3.
Transcription de la présentation:

Compilation avancée: analyse de programmes, optimisations de code. A suivre de préférence après le cours de base de compilation (Tanguy Risset). Des connections également avec les cours d’algorithmique. Alain Darte Paul Feautrier Chargé de recherches au CNRS Professeur ENS-Lyon Équipe Compsys LIP, ENS-Lyon

Plan Introduction. Quelques problèmes sur des processeurs spécifiques. Organisation du cours. Problématique, questions. Quelques thèmes abordés. Outils mathématiques rencontrés. Quelques problèmes sur des processeurs spécifiques. Pipeline logiciel. Transformations de boucles. Équations récurrentes uniformes.

Organisation du cours Choix des thèmes du cours en fonction de ce que vous savez déjà (Master 2 notamment) et du nombre de participants. Une grosse moitié de cours « magistraux » pour donner les bases, présenter quelques techniques en détails, et introduire quelques problèmes. Une seconde partie de découverte de sujets plus pointus par lecture et présentation d’articles. Évaluation: 1 devoir à la maison, 1 examen final éventuel, attitude en cours, rapport + exposé. 18 systems on TOP 500 list for year 2000capable of teraflop or more peak 7 yield sustained teraflop performance on benchmarks

Problématique Comprendre ce qui peut se faire automatiquement dans le domaine de la compilation (souvent avec des problèmes liés à la mémoire et au parallélisme): Formalisation des problèmes (modèle, fonction objective). Étude des problèmes (NP-complétude?, algorithmes). Étude des modèles (limites, contre-exemples). Établir des liens entre différents problèmes/théories. Applications: Parallélisation automatique (et compilation de HPF). Optimisations avancées en compilation “traditionnelle”. Compilation de circuits (ex: compilateur PICO des HP Labs/Synfora, MMAlpha ici). 18 systems on TOP 500 list for year 2000capable of teraflop or more peak 7 yield sustained teraflop performance on benchmarks

Évolution de la thématique Équations récurrentes uniformes Réseaux systoliques Vectorisation de boucles Parallélisation automatique Transformations de boucles High Performance Fortran 18 systems on TOP 500 list for year 2000capable of teraflop or more peak 7 yield sustained teraflop performance on benchmarks Langages de haut niveau (Matlab, OpenMP,UPC, CoArray Fortran, …) ILP et processeurs embarqués “Compilation” de circuits spécialisés

Sujets abordés Rappels d’ordonnancement « de base »: graphes de tâches acycliques, contraintes de ressources, “deadlines”. Ordonnancement cyclique et pipeline logiciel: liens avec le retiming. Supports hardware pour le pipeline logiciel: registres rotatifs, de prédication, avec spéculation. Compilation-parallélisation; premier pas: transformations de boucles. Algorithmes d’Allen et Kennedy, de Lamport. Transformation unimodulaires. Réécriture de code. Systèmes d’équations récurrentes uniformes: calculabilité, ordonnancement, liens avec la parallélisation. Synthèse de circuits: méthode systolique de base et extensions. Localité et allocation mémoire: fusion de boucles, contraction de tableaux, repliement mémoire. 18 systems on TOP 500 list for year 2000capable of teraflop or more peak 7 yield sustained teraflop performance on benchmarks

Outils mathématiques Modélisation: Analyse: Systèmes d’équations récurrentes uniformes. Graphes de toutes sortes (control-flow, de dominance, d’ínterférence, de dépendances, etc.). Polyèdres, réseaux (« lattices »). Analyse: NP-complétude. Algorithmes de graphes. Techniques d’ordonnancement. Algèbre linéaire. Formes d’Hermite et de Smith. Calculs sur polyèdres, programmation linéaire. 18 systems on TOP 500 list for year 2000capable of teraflop or more peak 7 yield sustained teraflop performance on benchmarks

Plan Introduction. Quelques problèmes sur des processeurs spécifiques Pipeline logiciel Transformations de boucles. Équations récurrentes uniformes. Mention remaining parts of talk for first outline.

Constructeurs de processeurs « embarqués » Motorola (Mcore, SC140e) Philips (Trimedia) STMicro (LX/ST200 family) Intel (StrongARM, Xscale) TI (TMS320 family) Agere (Payload) ARM MIPS Tensilica (XTensa) Synfora Atmel (Diopsis, ATmega) IBM (PowerPC family) Ubicom (IP3023) StarCore (SC1400) et plein plein d’autres compagnies…

Network processor Myricom Une seul unité pipelinée de profondeur 3 (ou 4 selon la version): moves, jumps, ALU, load/store. Pas de hiérarchie mémoire. Peu de registres, avec une sémantique particulière.  Voir les autres transparents, exemple du pipeline logiciel

Agere Payload Plus VLIW de largeur 4. 1 ALU par « slice » de 1 octet. 32 registres de 4 octets, un pour chaque « slice », plus registres spéciaux Y et Q: Q = mémoire temporaire, « slice » par « slice » Y = écrit « slice » par « slice », lu par tout le monde  Seul moyen de communication! Code à … 2 adresses! (sauf pour Q et Y).

Ubicom IP3023 Processeur scalaire « in order ». 8 contextes de registres pour support « multi-thread ». Possibilité de mélanger les instructions de différents « threads » cycle par cycle. 256Ko I-ScratchPad + 64Ko D-ScratchPad.

ST220 Processeur VLIW (largeur 4). Direct-mapped I-Cache (512 lignes de 64o). Prédication limitée (Select = move conditionnel). Multiply-add, auto-incréments.

Registres étranges Registres d’adresse avec incréments et décréments: ex: TI TMS320C25, Motorola DSP56K Registres rotatifs: ex: Itanium « Clusters » de registres: ex: Agere Payload « Register windows »: ex: WMIS Microcontroller Registres pour load/store doubles: ex: IBM PowerPC405, Intel StrongARM pour IXP-1200

Support hard pour le code Cache d’instructions ScratchPad pour les instructions Support pour l’exécution des boucles Compression de code ex: Atmel Diopsis Dual Core DSP

Et encore plein d’autres options et problèmes… Processeurs extensibles (custom functional units). ex: Xtensa (Tensilica) Hiérarchies mémoires, horizontales, verticales, avec ou sans by-pass, … I-Cache + D-Cache, avec ou sans ScratchPads. Problèmes de parallélisme au niveau des chips. Puissance: drowsy modes, …

Plan Introduction. Quelques problèmes sur des processeurs spécifiques Pipeline logiciel: exemple du LANai 3.0 Transformations de boucles. Équations récurrentes uniformes. Mention remaining parts of talk for first outline.

Qu’est-ce que le pipeline logiciel? Exemple du LANai 3.0: une unité séquentielle (pipelinée) effectuant loads, stores, branches, moves et opérations arithmétiques. latence apparente: 1 cycle sauf pour le load et les branches (2 cycles)  “shadow” 1 seul type de “control hazard”, et déterministe: r1 = load (toto) r1 = r2 + 1  priorité pour le move entre registres. Mention remaining parts of talk for first outline.

Exemple d’ordonnancement de code Code initial L400: ld[r26]  r27 nop add r27, 6740  r26 ld 0x1A54[r27]  r27 sub.f r27, r25  r0 bne L400 L399: Temps 8+8n Code compacté L400: ld[r26]  r27 nop ld 0x1A54[r27]  r27 add r27, 6740  r26 sub.f r27, r25  r0 bne L400 L399: Temps 7+7n ! Code “software pipeliné” ld[r26], r27 nop add r27, 6740  r26 L400: ld 0x1A54[r27]  r27 ld[26]  r27 sub.f r27, r25  r0 bne L400 L399: Temps 8+5n !!! Mention remaining parts of talk for first outline.

Plan Introduction. Pipeline logiciel. Transformations de boucles. Détection du parallélisme. Fusion, décalage et mémoire. Équations récurrentes uniformes. Allocation de registres. Mention remaining parts of talk for first outline.

Quel parallélisme peut-on espérer? Quelles sont les transformations valides? Comment représenter les contraintes? Analyse et représentation des dépendances  voir le cours de Paul Feautrier. Quel parallélisme peut-on espérer? Algorithmes de plus en plus complexes en fonction des représentations des dépendances (Allen-Callahan-Kennedy, Lamport, Wolf-Lam, Feautrier, ...) Optimalité, dans quel sens? Complexité? Généralité des méthodes? Extensibilité? Mention remaining parts of talk for first outline.

Exemple, Allen-Callahan-Kennedy doseq k = 1, n a(k,k) = sqrt(a(k,k)) dopar i = k+1, n a(i,k) = a(i,k)/a(k,k) enddo dopar j = k+1, i a(i,j) = a(i,j) – a(i,k)*a(j,k) do k = 1, n a(k,k) = sqrt(a(k,k)) do i = k+1, n a(i,k) = a(i,k)/a(k,k) do j = k+1, i a(i,j) = a(i,j) – a(i,k)*a(j,k) enddo doseq k = 1, n a(k,k) = sqrt(a(k,k)) doseq i = k+1, n a(i,k) = a(i,k)/a(k,k) dopar j = k+1, i a(i,j) = a(i,j) – a(i,k)*a(j,k) enddo doseq k = 1, n a(k,k) = sqrt(a(k,k)) do i = k+1, n a(i,k) = a(i,k)/a(k,k) do j = k+1, i a(i,j) = a(i,j) – a(i,k)*a(j,k) enddo i j Mention remaining parts of talk for first outline. f,  f, , 2 f, a, o, 1 f,  f, , 2

Allen-Callahan-Kennedy (suite) Dépendances: par niveau. Transformations de boucles: marquage (doseq/dopar) et distribution. Forces: optimal pour les niveaux de dépendances: pourquoi? souvent suffisant en pratique. Faiblesses: insuffisant pour une description des dépendances plus fine, insuffisant pour appliquer plus de transformations. Exemple: toutes les transformations unimodulaires, le décalage d’instructions et la fusion de boucles. Mention remaining parts of talk for first outline.

Autres transformations (exemples) do i = 1,n do j = 1,n a(i,j) = a(i,j-1)+a(i-1,j-1) enddo do j = 1,n dopar i = 1,n a(i,j) = a(i,j-1)+a(i-1,j-1) enddo do i = 1,n+1 dopar j = 1,n+1 if (i  1) & (j  1) b(i-1,j-1) = a(i-1,j-1) + a(i-1,j-2) if (i  n) & (j  n) a(i,j) = b(i-1,j-1) enddo do i = 1,n dopar j = 1,n a(i,j) = b(i-1,j-1) enddo b(i,j) = a(i,j)+a(i,j-1) do i = 1,n do j = 1,n a(i,j) = b(i-1,j-1) b(i,j) = a(i,j)+a(i,j-1) enddo Mention remaining parts of talk for first outline.

Un exemple de problème de fusion pour la mémoire: la contraction de tableaux But: transformer un tableau temporaire en scalaire. application: Matlab, Fortran90, etc. a = d + 1 b = a/2 c(1..n) = b(2..n+1) + a(1..n) do i = 1,n a(i) = d(i) + 1 enddo b(i) = a(i)/2 c(i) = b(i+1) + a(i) prologue do i = 2,n a(i) = d(i) + 1 b = a(i)/2 c(i-1) = b + a(i-1) enddo épilogue prologue do i = 2,n a(i) = d(i) + 1 b(i) = a(i)/2 c(i-1) = b(i) + a(i-1) enddo épilogue do i = 1,n a = d(i) + 1 b(i) = a/2 c(i) = b(i+1) + a enddo do i = 1,n a(i) = d(i) + 1 b(i) = a(i)/2 c(i) = b(i+1) + a(i) enddo do i = 1,n a = d(i) + 1 b(i) = a/2 c(i) = b(i+1) + a enddo Mention remaining parts of talk for first outline.

Plan Introduction. Pipeline logiciel. Transformations de boucles. Équations récurrentes uniformes. Principes. Exemple. Résultats et intérêts du modèle. Mention remaining parts of talk for first outline.

Équations récurrentes uniformes Pour 1 i,j,k  n a(i,j,k) = b(i,j-1,k) + a(i,j,k-1) b(i,j,k) = a(i-1,j,k) + b(i,j,k+1) 1 -1 1 1 Description à assignation unique. Dépendances uniformes. Principe de calcul: membre droit d’abord. Mention remaining parts of talk for first outline. Dépendances explicites. Ordre d’exécution implicite. Mémoire dépliée.

SUREs: principes généraux Analyse des unions de cycles de poids total nul: calculabilité du système. degré de parallélisme du système. Analyse “duale” (en termes de programmation linéaire): ordonnancement du système. Attribution d’une sémantique temps + espace: description d’une architecture systolique lorsque le “temps” est mono-dimensionnel. pas de mémoire globale mais des temporisations. Mention remaining parts of talk for first outline.

SURE, exemple Pour 1 i,j,k  n a(i,j,k) = b(i,j-1,k) + a(i,j,k-1) b(i,j,k) = a(i-1,j,k) + b(i,j,k+1) do i = 1,n do k = n,1,-1 dopar j = 1,n b(i,j,k) = a(i-1,j,k) + b(i,j,k+1) enddo do k = 1,n a(i,j,k) = b(i,j-1,k) + a(i,j,k-1) chemin de dépendance en N*N 1 -1 Mention remaining parts of talk for first outline.

Pourquoi ce modèle? Avantages: Inconvénients: Modèle simplifié, plus simple à analyser. Flot de calcul explicite. Correspondance calcul-mémoire. Dépendances uniformes  “délais” constants. Description “propre” à la fois proche de l’algorithme et de l’architecture. Possibilités de transformations dans le même formalisme. Inconvénients: Langage correspondant (Alpha) restrictif. Langage loin des habitudes des programmeurs. Mention remaining parts of talk for first outline.

Boucles, polyèdres, réseaux j 18 systems on TOP 500 list for year 2000capable of teraflop or more peak 7 yield sustained teraflop performance on benchmarks i

Outils mathématiques: exemple des transformations de boucles. Bornes de boucles  Polyèdres. Points entiers (itérations)  Réseaux, sous-réseaux. Transformations de boucles  Changement de base. Représentations des dépendances  Polyèdres. Allocation des données  Algèbre linéaire, réseaux. Analyse et génération des communications en HPF  Polyèdres + Presburger. Optimisations  Programmation linéaire. ... 18 systems on TOP 500 list for year 2000capable of teraflop or more peak 7 yield sustained teraflop performance on benchmarks