Sanity Check. bgcolor mgcolor fgcolor



Documents pareils
INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Initiation au HPC - Généralités

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

Une méthode de conception de systèmes sur puce

Systèmes et traitement parallèles

Architecture des ordinateurs

Techniques d ordonnancement pour les SoC

Communications performantes par passage de message entre machines virtuelles co-hébergées

Quoi de neuf en LabVIEW FPGA 2010?

6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr

Introduction au langage C

Structure d un programme

Exemple d implantation de fonction mathématique sur ST240

Compilation (INF 564)

IRL : Simulation distribuée pour les systèmes embarqués

Gestion commerciale. Une réponse fonctionnelle quel que soit votre secteur d activité

Exécutif temps réel Pierre-Yves Duval (cppm)

Mesure de performances. [Architecture des ordinateurs, Hennessy & Patterson, 1996]

Initiation à LabView : Les exemples d applications :

Eléments d architecture des machines parallèles et distribuées

SSTIC Désobfuscation automatique de binaires. Alexandre Gazet. Yoann Guillot. Et autres idyles bucoliques...

Système de Gestion de Fichiers

Rappels d architecture

Architecture des ordinateurs

Exécution des instructions machine

L a d é m a r c h e e t l e s o u t i l s p r o p o s é s

Cours A7 : Temps Réel

1 Architecture du cœur ARM Cortex M3. Le cœur ARM Cortex M3 sera présenté en classe à partir des éléments suivants :

Programmation C. Apprendre à développer des programmes simples dans le langage C

Manuel de System Monitor

Processus! programme. DIMA, Systèmes Centralisés (Ph. Mauran) " Processus = suite d'actions = suite d'états obtenus = trace

CH.3 SYSTÈMES D'EXPLOITATION

Multiprogrammation parallèle générique des méthodes de décomposition de domaine

PROGRAMME DU CONCOURS DE RÉDACTEUR INFORMATICIEN

Introduction à l architecture des ordinateurs. Adrien Lebre Décembre 2007

I00 Éléments d architecture

Gestion de la mémoire

Modules du DUT Informatique proposés pour des DCCE en 2014/2015

Thème 3 Conception et vérification d architectures de systèmes sur puce

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Vers du matériel libre

CORBA haute performance

Parallélisme et Répartition

ViSaGe. Virtualisation du Stockage dans les Grilles. Informatiques. RenPar 16, 6-8 Avril 2005 Thiebolt François

Modules Multimédia PAO (Adobe)

Contexte et motivations Les techniques envisagées Evolution des processus Conclusion

Calcul scientifique précis et efficace sur le processeur CELL


Algorithmique I. Algorithmique I p.1/??

Business Everywhere pack faites le choix d une mobilité totale

Objet : demande d emploi

Temps Réel. Jérôme Pouiller Septembre 2011

Évaluation et implémentation des langages

LES OUTILS D ALIMENTATION DU REFERENTIEL DE DB-MAIN

Seance 2: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu.

GenDbg : un débogueur générique. Didier Eymery Jean-Marie Borello Jean-Marie Fraygefond Odile Eymery Philippe Bion

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Indexmed : Le big data en écologie? Pas encore disent certains. Pas si sûr! Avec IndexMed. Relevons ce challenge!

Vérification formelle de la plate-forme Java Card

Solution logicielle pour le pilotage et l ERM. Journées d études IARD 26 mars mars 2010

Tp 1 correction. Structures de données (IF2)

Introduction à la Programmation Parallèle: MPI

INF6500 : Structures des ordinateurs. Sylvain Martel - INF6500 1

Retour d expérience en Astrophysique : utilisation du Cloud IaaS pour le traitement de données des missions spatiales

Évaluation des compétences. Identification du contenu des évaluations. Septembre 2014

ERESI : une plate-forme d'analyse binaire au niveau noyau. The ERESI team

Release Notes POM v5

Chapitre 1 - Langages de description d architectures matérielles hybrides

CM2 L architecture MIPS32

Rapport 2014 et demande pour Portage de Méso-NH sur Machines Massivement Parallèles du GENCI Projet 2015 : GENCI GEN1605 & CALMIP-P0121

Conception des systèmes répartis

Données Réparties. Thibault BERNARD.

Résumé Génération de code Le code intermédiaire

Conception de circuits numériques et architecture des ordinateurs

MODELISATION UN ATELIER DE MODELISATION «RATIONAL ROSE»

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Introduction au datamining

IV- Comment fonctionne un ordinateur?

UNIVERSITÉ D ORLÉANS ÉCOLE DOCTORALE MIPTIS MATHÉMATIQUES, INFORMATIQUE, PHYSIQUE THÉORIQUE ET INGÉNIEURIE DES SYSTÈMES. THÈSE présentée par :

Informatique Industrielle Année Architecture des ordinateurs Note de cours T.Dumartin

Une bibliothèque de templates pour CUDA

Excel. Identification. Informations sur vos besoins et objectifs. Notions fondamentales. Fiche de validation des besoins en formation Bureautique

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :

ÉdIteur officiel et fournisseur de ServIceS professionnels du LogIcIeL open Source ScILab

Les processus métiers : concepts, modèles et systèmes

Chapitre 0 Introduction à la cinématique

GIMP. Le traitement d'images libre INSTALLATION SUR WINDOWS

Les structures de données. Rajae El Ouazzani

UE C avancé cours 1: introduction et révisions

Langage C. Patrick Corde. 22 juin Patrick Corde ( Patrick.Corde@idris.fr ) Langage C 22 juin / 289

La programmation linéaire : une introduction. Qu est-ce qu un programme linéaire? Terminologie. Écriture mathématique

La Licence Mathématiques et Economie-MASS Université de Sciences Sociales de Toulouse 1

UE Programmation Impérative Licence 2ème Année

! "# "! # $% & '( ) '* '

Université du Québec à Chicoutimi. Département d informatique et de mathématique. Plan de cours. Titre : Élément de programmation.

Partie 7 : Gestion de la mémoire

Architecture matérielle des systèmes informatiques

Transcription:

Sanity Check bgcolor mgcolor fgcolor 0 1 2 3 4 5 6 7 8 9 10

Compilation pour cibles hétérogènes: automatisation des analyses, transformations et décisions nécessaires, François Irigoin et Ronan Keryell Télécom Bretagne, Mines ParisTech, HPC Project Renpar 20, S t Malo, France

Besoins de performances? La quantité La spécialisation

Dans la vraie vie... Contrainte d énergie (Watt) Contrainte de place (mm 2 ) Coûts de fabrication ( ) Coûts de refroidissement (Joule) < votre chef peut insérer une contrainte ici > spécialisation sous contrainte

Dans la vraie vie... Contrainte d énergie (Watt) Contrainte de place (mm 2 ) Coûts de fabrication ( ) Coûts de refroidissement (Joule) < votre chef peut insérer une contrainte ici > spécialisation sous contrainte

Problèmes liés à la spécialisation Spécifique mais... Coût de conception (matériel) Coût de développement (logiciel) Peu d effet de communauté pour les outils Solutions 1 Bibliothèque applicative 2 Compilation

Exemple 1 : carte graphique Performance de crête Faible consommation Modèle d exécution hybride SIMD/MIMD champs d application coût de portage pérennité / évolution de l architecture portabilité des performances coût de debug

Exemple 2 : Terapix Bon rapport FLOPS Watt Embarqué Spécialisé pour le traitement d image À base de FPGA Indépendance Pas de compilateur Modèle d exécution SIMD Pas d exécution masquée Espaces d adressage multiples Mémoire 2D Jeu d instruction VLIW #!"!" DMA 2D de taille fixe Mémoire limitée $$$

Problématique Compilation pour accélérateurs matériels Comment produire rapidement des compilateurs pour des accélérateurs spécifiques? Méthodologie 1 Identification des contraintes matérielles récurrentes 2 Identification/développement des transformations de code qui lèvent ces contraintes 3 Assemblage de compilateurs dédiés 4 Utilisation des compilateurs matériels (quand ils existent)

Problématique Compilation pour accélérateurs matériels Comment produire rapidement des compilateurs pour des accélérateurs spécifiques? Méthodologie 1 Identification des contraintes matérielles récurrentes 2 Identification/développement des transformations de code qui lèvent ces contraintes 3 Assemblage de compilateurs dédiés 4 Utilisation des compilateurs matériels (quand ils existent)

Contraintes matérielles I Parallélisme SIMD? MIMD? vectoriel? pipeline? niveau nœud? cœur? instruction? Mémoire Partagée? distribuée? Coût des transferts mémoires? Flexibilité du DMA? Contraintes d alignement? de dimension? Taille mémoire? Hiérarchie mémoire? Cache? Présence d une ROM?

Contraintes matérielles II Jeu d instructions Calcul flottant? Nombres d opérandes? Taille des opérandes? Fonctions mathématiques? trigonométriques? Fonctions spécifiques aux domaine? Registres spécifiques? Opérateurs de flot de contrôle? RISC? CISC?...

Transformations de code Dans la littérature... Parallélisme Vectorisation de code Détection de parallélisme Extraction de parallélisme... Mémoire Blocage Extraction de procédure Génération de transferts mémoire... Jeu d instructions Détection de motifs Recouvrement de graphe Allocation de registres...

Pièces manquantes Transformations Automatisation de la décision du déport de code sur accélérateur Génération optimisée des transferts mémoires Agrégation / recouvrement mémoire Gestionnaire de passes Enchaînement Programmable > Séquentiel

Analyse de régions de tableaux convexes char isme ( i n t n, f l o a t a [ n ] [ 2 n ], f l o a t b[1+n ] ) { for ( i n t i =2; i <n 1; i ++) for ( i n t j =1; j <n ; j ++) a [ i ] [ j +n ] = j%2? 1+a [ i ] [ j +n ] : b [ j ] ; return o f _ t h e _ j e d i ; }

Analyse de régions de tableaux convexes char isme ( i n t n, f l o a t a [ n ] [ 2 n ], f l o a t b[1+n ] ) { for ( i n t i =2; i <n 1; i ++) for ( i n t j =1; j <n ; j ++) a [ i ] [ j +n ] = j%2? 1+a [ i ] [ j +n ] : b [ j ] ; return o f _ t h e _ j e d i ; } R exact w (σ, a) = {a[φ 1 ][φ 2 ] 2 φ 1 < n 1, 1 + n φ 2 < 2 n} n 0 0 n 2n

Analyse de régions de tableaux convexes char isme ( i n t n, f l o a t a [ n ] [ 2 n ], f l o a t b[1+n ] ) { for ( i n t i =2; i <n 1; i ++) for ( i n t j =1; j <n ; j ++) a [ i ] [ j +n ] = j%2? 1+a [ i ] [ j +n ] : b [ j ] ; return o f _ t h e _ j e d i ; } R exact w (σ, a) = {a[φ 1 ][φ 2 ] 2 φ 1 < n 1, 1 + n φ 2 < 2 n} n 0 0 n 2n R may r (σ, b) = {b[φ 1 ] 1 φ 1 < n} 0 n

Utilisation pour la génération de code sur machine hétérogènes Concepts analogues région zone mémoire tableau structure de données de base en HPC convexe zone contigüe Application Volume mémoire comptage de points! Allocation mémoire région lues et écrites Copies vers l accélérateur régions lues Copies vers l hôte régions écrites

Cas pratique: Érosion verticale sur Terapix void runner ( i n t n, i n t img_out [ n 4][n ], i n t img [ n ] [ n ] ) { for ( i n t y =2; y<n 2;++y ) for ( i n t x =0; x<n ; x ++) img_out [ y 2][ x ] = MIN ( MIN ( MIN ( MIN ( img [ y 2][ x ], img [ y 1][ x ] ), img [ y ] [ x ] ), img [ y + 1 ] [ x ] ), img [ y + 2 ] [ x ] ) ; } Ça vous parait facile?

Schéma de compilation 1 Détection du parallélisme 2 Pavage rectangulaire symbolique 3 Estimation de l empreinte mémoire pavage fixe 4 Régions de tableaux génération de DMA 5 Extraction de procédure génération de noyau 6 «mise aux normes» du noyau (for while, code 2 adresses... ) 7 Génération de code assembleur

Chaîne de compilation C [traducteur hôte] [traducteur cible] C@host C@accel asm [compilateur hôte] [compilateur cible] bin. hôte bin. cible

Code hôte généré for ( y t =0; yt <=(n+119) /124 1; y t +=1) { for ( x t =0; xt <=(n+259) /260 1; x t +=1) { / / PIPS generated v a r i a b l e i n t ( img0 ) [ 1 3 2 ] [ 2 6 0 ] = ( i n t ( ) [ 1 3 2 ] [ 2 6 0 ] ) 0, ( img_out0 ) [ 1 2 8 ] [ 2 6 0 ] = ( i n t ( ) [ 1 2 8 ] [ 2 6 0 ] ) 0; P4A_accel_malloc (&img_out0, 33280 sizeof ( i n t ) ) ; P4A_accel_malloc (&img0, 34320 sizeof ( i n t ) ) ; P4A_copy_to_accel_2d ( sizeof ( i n t ), MIN((131 n 131) / 4, n+126) +1, MIN((263 n 263) / 4, n+258) +1, 132, 260, 124 yt, 260 xt, &img [ 0 ] [ 0 ], img0 ) ; launcher_0 ( 259+1, img0, img_out0 ) ; P4A_copy_from_accel_2d ( sizeof ( i n t ), n+123, n+259, 128, 260, 124 yt, 260 xt, &img_out [ 0 ] [ 0 ], img_out0 ) ; P4A_accel_free ( img_out0 ) ; P4A_accel_free ( img0 ) ; } }

Code accélérateur généré void launcher_0_microcode ( i n t y, i n t I_3, i n t img0, i n t img_out00 ) { / / PIPS generated v a r i a b l e i n t x ; / / PIPS generated v a r i a b l e i n t img_out000 ; img_out000 = img_out00 ; for ( x = 0; x <= I_3 1; x += 1) { img_out000 = MIN ( MIN(MIN(MIN ( ( img0+x+260 y ), ( img0+x+260 y+260 ) ), ( img0+x+260 y +520 ) ), ( img0+x+260 y+780 ) ), ( img0+x +260 y+1040 ) ) ; img_out000 += 1 ; } }

Code assembleur généré (non compacté... ) sub launcher_ 0_ microcode im7 = FIFO1 im6 = FIFO0 im5 = im7 do_n0 re16 = 260... re16 = re16 y... re15 = re17... re15 = re15+re16... im4 = im6 im4 = im4+re15

Conclusion Rappel du problème Comment assembler à moindre coût un compilateur pour un accélérateur? Méthodologie Boîte à outils Une infrastructure de compilation pour le calcul hétérogène doit fournir des transformations à grain fin pour lever les contraintes matérielles Analyses Polyédriques Les outils polyhédriques fournissent des analyses fines qui se prêtent bien à la génération de code pour accélérateurs matériels Pragmatique Utiliser les outils existants / fournis par le vendeur