Efficient Code Generation for Automatic Parallelization and

Slides:



Advertisements
Présentations similaires
Architecture de machines Le microprocesseur
Advertisements

Frédéric Gava JFLA2006 Une implantation de la juxtaposition parallèle.
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.
Agenda Les Share Add-in Le Ruban dOffice "12" DémonstrationRibbonX Programmer le Ruban dOffice "12" DémonstrationCustomTaskPaneDémonstrationDéploiement.
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,
C++ 5ème cours Patrick Reuter maître de conférences
Responsables : Joël Falcou et Jean-Thierry Lapresté
Reorganizing the global structure Boulay Clémence Boutserin Maxime Brigot Aurélien Jacquet Maxime SI4 Tutors: Nicolas Lionel, Gautero Michel 06/12/2009.
Cours n° 8 Conception et Programmation à Objets
JPEG2000 Vincent Roudaut Master M2 ESTC CNAM
Alain Faye , Frédéric Roupin CEDRIC - IIE - CNAM
Chargé de recherches au CNRS
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.
Les Web Services.
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.
Modèle de coût algorithmique intégrant des mécanismes de tolérance aux pannes Samir Jafar, Thierry Gautier, Jean Louis Roch Laboratoire ID-IMAG Equipe.
Informatique parallèle hautes performances
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.
جامعــــــة محمد خيضــــــــــــر
Algorithmes parallèles
1)Boucle for 2)Boucle while
BlueJ_XI 1 Java, les objets : tout de suite ! Gestion des erreurs : les exceptions Notes de cours associées au chapitre 11 tutorial BlueJ
XQuery 1. Introduction 2. Modèle de données 3. XQuery par l'exemple
Structures de données et algorithmes – TP2
Faculté I&C, Claude Petitpierre, André Maurer 1 Java.
Les algorithmes: complexité et notation asymptotique
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,
Master 1 SIGLIS java Lecteur Stéphane Tallard Chapitre 4 – Structures de contrôle.
Interfaces (fin) classes locales et internes, Object, clonage.
Historique de SystemC Regroupe 4 courants didées: SCENIC Project : Synopsys+UC Irvine Philips System-Level Data Types, VSIA SLD DWG IMEC, Hardware-Software.
Optimisation et parallélisation de code pour processeur à instructions SIMD multimedia François Ferrand.
Algorithme et programmation
Modélisation géométrique à l’aide d’un maillage
Structures de données IFT-2000 Abder Alikacem La librairie STL du C++ Département dinformatique et de génie logiciel Édition Septembre 2009.
Multi-Thread Jian-Yun Nie
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.
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
Analyse d’algorithmes
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
ALGORITHME DE TRI Le tri par insertion.
Efficient Code Generation for Automatic Parallelization and Optimization Cédric Bastoul Proposé par : Albert Cohen Présenté par : L.Landwerlin, J.Rahme,
Le VHDL : SOMMAIRE I Introduction II Éléments généraux du langage
Les Contrôles Page 1. Page 2 If … Elseif... Endif If … Endif if (i=5 and j
Optimisation des performances
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
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.
UMR 7619 Sisyphe Avril 2012 Alexandre Pryet Le langage une introduction pragmatique Cacul itératif.
IFIPS Info 5 – 2004 / 2005 Projet de Résolution de Contraintes JEU DE L’AWELE AMARAL – FILLIAT – LANGLAIS – PETIT – SCHILLER.
Simulation du rôle de la communication dans l’établissement d’un réseau de liens sociaux Projet GPL :
Introduction à la programmation objet avec java
INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel ASIP Design and Synthesis for Non Linear Filtering in.
Création et Optimisation de Modules Audio avec les instructions SSE
Les solides Définition:
Projet de Maîtrise Simulation 3D d’atomes robotiques Detanger Pierre-Gilles He Xuefeng Mauny Stéphane Villers Julien.
Les solides … « de révolution » LES SOLIDES Les POLYEDRES Les cônes : 1 base Les cylindres : 2 bases Les pyramides : 1 base Les prismes : 2 bases.
Coding party Écrire un programme qui élève un nombre au carré Écrire un programme qui teste si un nombre est pair Écrire un programme qui calcule la factorielle.
Architecture de machines Le microprocesseur Cours
Royaume de Maroc Université Hassan Premier Settat Faculté des Sciences et Techniques de Settat Description synthétiseur en langage VHDL d'un circuit intégré.
Int 10. Int 6.
Transcription de la présentation:

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

Intérêt Code efficace Génération automatique Processeurs complexes pipelines MMX (Matrix Math eXtention), SSE (Streaming SIMD Extensions), Altivec, ... ... Génération automatique Langages de programmation ne permettant pas l'accès à ces fonctionnalitées Opération pénible Dépendant du matériel

Plan Introduction Représentation polyédrique Schéma de génération Travaux antérieurs Génération 1.Algorithme de génération de code 2.Problèmes de génération IV.Expérimentations Implémentation Résultats V.Conclusion

Représentation polyèdrique Un polyèdre est un solide délimité par des faces polygonales. Représentation d'une classe de boucles (for/while) “nids de boucles” par des -polyèdres paramètrés

Représentation polyèdrique int i, j; for (i = 1 ; i < n ; i++) for (j = 1 ; j < n ; j++) if (i <= -j + n + 2) I1;

Représentation polyèdrique Condition de modélisation par un polyèdre : limites et conditions doivent déprendre de : compteur d'une boucle englobante constante paramètres formels SCoP (Static Control Part)

Représentation polyèdrique int i, j; for (i = 1 ; i < n ; i++) for (j = 1 ; j < n ; j++) if (i <= -j + n + 2) I1;

Schéma de génération Trouver Générer un nouvel Optimisations du code Analyser Générer du code réordonnancé Optimisations locales Code Code optimisé Trouver un nouvel ordre d'exécution

Travaux antérieurs Méthode de Quilleré et al. - Donne de bons résultats quand il faut générer un code pour plusieurs polyèdres - Possède plusieurs limitations : - la complexité - Génération de code avec pas unitaire seulement - Code non optimisé

Plan Introduction Représentation polyédrique Schéma de génération Travaux antérieurs Génération 1.Algorithme de génération de code 2.Problèmes de génération IV.Expérimentations Implémentation Résultats V.Conclusion

Algorithme de génération de code (1) Contexte Dimension Boucles imbriqués Entrées Sortie Liste des polyèdres - Liste des polyèdres transformés : - Contexte : l’ensemble des contraintes sur les paramètres globaux - Boucles imbriqués : qui implémentent l’ordre d’exécution de la fonction de ré-ordonnancement

Algorithme de génération de code (2) Figure 1 Figure 2 Le polyèdre transformé de S1 qu’on doit parcourir Le polyèdre transformé de S2 qu’on doit parcourir

Algorithme de génération du code (3) S1 et S2 S1 do i = 1  6 (pas = 2) do i = 7  n (pas = 2) do i = 1  6 (pas = 2) do j = 1  7-i S1 S2 Etapes : do j = 8-i  n S1 -Séparer les projections en polyèdres disjoints do i = 7  n (pas = 2) -Génération du code de parcours pour ‘i’ do j = 1  n S1 -Génération des boucles imbriqués

Boucles à pas non unitaires (1) Polyèdre de départ Transformation : fonction de transformation ayant pour matrice T = [1 2] Il peut être parfois nécessaire de ne pas parcourir certaines valeurs dans certaines dimensions Problème survient : quand T est non uni-modulaire (dét ≠ 1 ) Les Trous : points avec des images rationnelles dans l’espace d’origine Efficient Code Generation for Automatic Parallelization and Optimization

Boucles à pas non unitaires (2) Transformation en utilisant l’algorithme modifié par les auteurs Algorithme initial Algorithme modifié par les auteurs

Indépendance des degrés(1) Définition Indépendance entre les compteurs utilisés par les instructions considérées ou à exécuter. Exemple 4 matrices A, B, C, D dans M[n,n]. On doit calculer E= A x B & F= C x D

Indépendance des degrés(2) Exemple (suite1) pour t=1 à n Pour i=1 à n Pour j=1 à n E[i,j] += A[i,t] * B[t,j] F[i,j] += C[i,t] * D[t,j] Itérations: 2n3 + 2n2 + n Exemple (suite2) pour t=1 à n Pour i=1 à n Pour j=1 à n E[i,j] += A[i,t] * B[t,j] F[i,j] += C[i,t] * D[t,j] Itérations: 2n3 + n2 + n

Indépendance des degrés (3) Exemple (Fin) pour t=1 à n Pour i=1 à n Pour j=1 à n E[i,j] += A[i,t] * B[t,j] F[i,j] += C[i,t] * D[t,j] Itérations: n3 + n2 + n

Plan Introduction Représentation polyédrique Schéma de génération Travaux antérieurs Génération 1.Algorithme de génération de code 2.Problèmes de génération IV.Expérimentations Implémentation Résultats V.Conclusion

Implantation Sous le nom CLooG (Chunky Loop Generator) Disponible sous licence GNU à (http://www.prism.uvsq.fr) Applicable à plusieurs systèmes Avoir au préalable PIP/PipLib

Tests Résultats Infos générales sur les données d’entrée infos sur la forme des polyèdres Résultats

Résultats(1) Génération de code initial suboptimal dupliqué temps Apsi Art Lucas Quake 2192 1 9118 58 499 0 623 2 2070 1 6832 127 639 0 740 8 Comparaison entre ces deux colonnes nous donne un facteur de duplication de l’ordre de 3.4

Résultats(2) Résultats encourageants Utilisation de la mémoire acceptable De même que le temps de génération du CC Autres expériences montrent son efficacité ~10 polyèdres Sans explosion Mémoire Temps

Conclusion Compilation : Optimisation, Parallélisme Solution plusieurs méthodes(naïve, étude des polyèdres 1 à 1, …) meilleure méthode : polyèdre (Quilleri et al.) Apports de l’article Modèle de transformation générale Matrices quelconques, Pas non unitaires Fonctions de parcours non entière Montrer que la méthode donne des résultats optimaux avec des problèmes réels Perspectives Chevauchement des polyèdres complexité