Efficient Code Generation for Automatic Parallelization and Optimization Cédric Bastoul Proposé par : Albert Cohen Présenté par : L.Landwerlin, J.Rahme,

Slides:



Advertisements
Présentations similaires
Chapitre annexe. Récursivité
Advertisements

Architecture de machines Le microprocesseur
Cours n° 6 Standard Template Library I.
Rappels de C ECP – Option SA Henri Fallon. Objectifs Théorie + pratique Compréhension générale du langage Repartant « du début » Pour ceux qui savent.
Présenté Mouhamadou Thiam Experimental Comparison between Bagging and Monte Carlo Ensemble Classification auteurs Roberto Esposito & Lorenza Saitta.
Data Management for Large-Scale Scientific Computations in High Performance Distributed Systems A. Choudhary, M. Kandemir, J. NoG. Memik, X. Shen, W. Liao,
Calculs de complexité d'algorithmes
Formation C débutant. Notion de compilation source.c executable Phase de compilation Fichier de texte brut, inexploitable directement par la machine Fichier.
Programme de seconde 2009 Géométrie
Cours n° 8 Conception et Programmation à Objets
Numerical Optimization and applications
Chargé de recherches au CNRS
1 Réunion biblio 13/12/00 Support Vectors Présentation générale SSS Maintaining Algorithm.
1 La gestion des exceptions C++ Un programme peut rencontrer des conditions exceptionnelles qui risquent de compromettre la poursuite de son exécution.
People want to do X, but computers can only do Y. This leads to a problem. My job is to explain how this problem can be solved.
Rappels de C ECP – Option SA Henri Fallon. Objectifs Théorie + pratique Compréhension générale du langage Repartant « du début » Pour ceux qui savent.
Informatique parallèle hautes performances
Lancer de rayons interactif
ANPE - Introduction 1. Contexte 2. Acteurs et documents 3. Fonctionnalités proposées 4. Site 5. Chiffrage.
High Frequency Trading Introduction. Séminaires de 30 minutes, une fois par semaine (8 en tout) Sujets abordés – Définition dun algorithme et introduction.
Algorithmique Formation filée de mathématiques 9 décembre 2010.
جامعــــــة محمد خيضــــــــــــر
Les sous-programmes Chapitre n° 5: Objectifs : Activité:
Algorithmes parallèles
1)Boucle for 2)Boucle while
Qu’est-ce qu’un ordinateur ?
XQuery 1. Introduction 2. Modèle de données 3. XQuery par l'exemple
Application des algorithmes génétiques
Le VHDL De nos jours, les circuits numériques de haute performance sont habituellement créés à partir de descriptions en langages de haut niveau. Nous.
Les algorithmes: complexité et notation asymptotique
Efficient Code Generation for Automatic Parallelization and
IFT451 Introduction aux langages formels Froduald Kabanza Département dinformatique Université de Sherbrooke planiart.usherbrooke.ca/kabanza/cours/ift313.
Approche mémoire partagée Threads – Paradigme de lapproche – Objets exécutés par les processeurs threads vs processus, – un thread possède : Ses registres,
1 Les pointeurs et quelques rappels sur certains éléments du langage C.
Optimisation et parallélisation de code pour processeur à instructions SIMD multimedia François Ferrand.
Algorithme et programmation
Principes de programmation (suite)
Optimisation linéaire
1. HISTORIQUE Origine PROLOG : PROgrammation LOGique : SIMULA 67
Karim-Cyril Griche LSR/IMAG
LIFI-Java 2004 Séance du Jeudi 9 sept. Cours 1. La notion de langage Décrire une tâche à effectuer –programme Écrire à un haut niveau –facile pour lutilisateur.
Chapitre 9 Les sous-programmes.
8INF856 Algorithmes parallèles. Le langage parallèle Cilk Trois nouveaux mots clés: 1.spawn 2.sync 3.Parallel Si on enlève ces mots clés, on obtient un.
LE PROFILE UML POUR MARTE
Détection du meilleur format de compression pour une matrice creuse dans un environnement parallèle hétérogène Olfa HAMDI-LARBI.
Standard Template Library
Les Objets CORBA parallèles Travaux pratiques Lundi 22 mai 2000 ARC « Couplage » Christophe René (IRISA/IFSIC) Eric Lemoine (INSA Lyon)
COMPOSANTS PROGRAMMABLES
Algo-Prog en Ada TD2 2 IMACS Romaric GUILLERM
Importance du réseau dans des architectures MIMD Tout échange entre les processeurs nécessite un transfert de données via le réseau.
Schema Beans. Langage temperature Schema temperature
Optimisation des performances
Gestion de processus Corrigé TD 1 EFREI I
Présentation rapide d’
8INF856 Programmation sur architectures parallèles
Un outil d’estimation du temps d’exécution au pire-cas par analyse statique de programmes IRISA - Projet Solidor Antoine COLIN.
PARALLÉLISATION AUTOMATIQUE D’ALGORITHMES
Introduction au langage C Fonctions et Procédures
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 à.
UMR 7619 Sisyphe Avril 2012 Alexandre Pryet Le langage une introduction pragmatique Cacul itératif.
Informatique et Sciences du Numérique
Conception de Programmes - IUT de Paris - 1ère année Cours 2 – Références et passage de paramètres Les Références –Introduction aux références.
2005/2006 Structures de Données Introduction à la complexité des algorithmes.
INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel ASIP Design and Synthesis for Non Linear Filtering in.
Titre domaine objectifs matériel déroulement titre domaine objectifs matériel déroulement.
Création et Optimisation de Modules Audio avec les instructions SSE
Les journées de l’2015 Le Model-Based Design Une approche complète en sciences industrielles de l’ingénieur Frédéric MAZET Lycée Dumont d’Urville Toulon.
Int 10. Int 6.
Transcription de la présentation:

Efficient Code Generation for Automatic Parallelization and Optimization Cédric Bastoul Proposé par : Albert Cohen Présenté par : L.Landwerlin, J.Rahme, M.Thiam 1/18 Efficient Code Generation for Automatic Parallelization and Optimization

Code efficace  Processeurs de haut niveau :  pipelines  MMX (Matrix Math eXtention), SSE (Streaming SIMD Extensions), Altivec,... ... Intérêt 2/18 Efficient Code Generation for Automatic Parallelization and Optimization Génération automatique  Opération pénible  Dépendant du matériel  Langages de programmation ne permettant pas l'accès à ces fonctionnalitées

Plan  Introduction  Schéma de génération  Formalisme  Algorithme de génération de code  Problèmes de génération  Expérimentations  Implémentation  Résultats  Conclusion 3/18 Efficient Code Generation for Automatic Parallelization and Optimization

Schéma de génération 4/18 Changer l'ordre d'éxécution Générer du code réorganisé Optimisations locales Code réorganisé Code optimisé Fonction de réorganisatio n Code + informations de réorganisation Efficient Code Generation for Automatic Parallelization and Optimization

Formalisme  Représentation d'une boucle :  vecteur d'itération : x = (i1, i2,..., in)  Représentation du domaine d'itération :  SCoP : polyèdre définit par des inégalitées linéaires  limites et conditions doivent déprendre de :  compteur d'une boucle englobante  constante  paramètres formels 5/18 Efficient Code Generation for Automatic Parallelization and Optimization

Formalisme 6/18 int i, j; for (i = 1 ; i < n ; i++) for (j = 1 ; j < n ; j++) if (i <= -j + n + 2) S1; Efficient Code Generation for Automatic Parallelization and Optimization

Formalisme  Changer l'ordre d'exécution :  Union de polyèdre disjoints  x vecteur d'itération  p paramètres d'itération  A, A' et c constants  Fonction de réorganisation  T, T' et t constants  rôle :  répartir les itérations sur différents processeurs  réordonner les itérations dans le temps 7/18 Efficient Code Generation for Automatic Parallelization and Optimization

Plan  Introduction  Schéma de génération  Formalisme  Algorithme de génération de code  Problèmes de génération  Expérimentations  Implémentation  Résultats  Conclusion 8/18 Efficient Code Generation for Automatic Parallelization and Optimization

Algorithme de génération 9/18 Efficient Code Generation for Automatic Parallelization and Optimization  Entrées :  liste de polyèdres  contexte  Dimension  Sortie :  code réordonné Génération récursive des boucles imbriqués Génération des niveaux des boucles Séparer les projections en polyèdres disjoint Trier les polyèdres résultants

Algorithme de génération 10/18 Efficient Code Generation for Automatic Parallelization and Optimization

Problèmes de génération 11/18 Efficient Code Generation for Automatic Parallelization and Optimization Problème : T est non uni modulaire (déterminant ≠ 1 ) trous Polyèdre de départ Transformation traditionnelle Transformation utilisant l’algorithme de l’article

Problèmes de génération  Degrés de liberté 12/18 Efficient Code Generation for Automatic Parallelization and Optimization

Plan  Introduction  Schéma de génération  Formalisme  Algorithme de génération de code  Problèmes de génération  Expérimentations  Implémentation  Résultats  Conclusion 13/18 Efficient Code Generation for Automatic Parallelization and Optimization

Implémentation 14/18 PIP/PipLibYAKA Chunky CLanCLooG Code Optimisé  CLan : analyseur de code  PIP/PipLib : solveur de problèmes paramètrés de programmation linéaire en nombre entiers  Chunky : Trouve les meilleures transformations à appliquer  CLoog : générateur de code Efficient Code Generation for Automatic Parallelization and Optimization

Expérimentation Méthodologie –Ensemble représentatif d’exemples –Régénérer tous les SCoP –Fonction de transformation  Initialement = fonction de réordonnancement  Entrée : Code Original(CO)  Sortie : Code Cible(CC) –Sémantiquement CC = CO 15/18 Efficient Code Generation for Automatic Parallelization and Optimization

Résultats 16/18 Efficient Code Generation for Automatic Parallelization and Optimization Résultats SpecFP 2000

Résultats(3) Résultats encourageants –Utilisation de la mémoire acceptable –De même que le temps de génération du CC Autres expériences efficacité  ~10 polyèdres –Sans explosion  Mémoire  Temps 17/18 Efficient Code Generation for Automatic Parallelization and Optimization

Résumé Problème du balayage de plusieurs polyèdres –Approche naïve (suppression des redondances) –Générer le CC pour chaque polyèdre ensuite les regrouper  Problème contrôles redondants –Récursivement  Générer un ensemble de boucles imbriquées  Séparer en sous-ensembles de polyèdres disjoints  Analyser plusieurs unions de polyèdres –Meilleur solution : pas de redondances –Complexité, pas unitaires & ordre partiel arbitraire sur les polyèdres –L’article solutionne ces 3 dernières limites 18/18 Efficient Code Generation for Automatic Parallelization and Optimization

Conclusion Problème en Compilation –Optimisation –Parallélisme Solution : méthode du polyèdre Apport de l’article –Modèle de transformation générale  Nouvelles opportunités pour optimiser le CC  Bénéficier de plus de liberté –Montrer que la méthode donne des résultats  optimaux avec des problèmes réels  Malgré un pire cas de complexité exponentiel 19/18 Efficient Code Generation for Automatic Parallelization and Optimization

Perspectives Améliorer la qualité du code généré Deux défis majeurs –Pas non unitaire –Chevauchement des polyèdres Défi toujours lié à l’explosion en temps et en espace 20/18 Efficient Code Generation for Automatic Parallelization and Optimization