Portage et optimisation d applications traitement d images sur architecture Kalray Mppa-Manycore Journées la Compilation Pierre Guillou Centre recherche en informatique Mines ParisTech 4 décembre 2013 1 / 26
1 La société Kalray 2 Le processeur Mppa-Manycore Architecture Programmation 3 Le langage Sigma-C Agents Subgraphs 4 Développement d agents pour l analyse d image Accélération matérielle Agents pour analyse d image 5 Génération co par Pips L existant - le framework Freia Application au Sigma-C 6 Interfaçage avec le framework Freia Gestion s transferts Architecture logicielle 7 Exemple L application licenseplate Résultats obtenus 2 / 26
Kalray Conception processeurs à haute efficacité énergétique Mppa : Multi-Purpose Processor Array 3 / 26
Kalray Conception processeurs à haute efficacité énergétique processeur gran efficacité énergétique 256 cœurs faible consommation énergétique (5W) systèmes embarqués 4 / 26
Kalray Conception processeurs à haute efficacité énergétique suite logicielle IDE (plugin Eclipse) débugger profiler système traces 4 / 26
Kalray Conception processeurs à haute efficacité énergétique station travail plate-forme développement complète Mppa-Manycore sur carte d extension PCI-Express Mppa-Accesscore Fedora 17, 16 Go DDR 4 / 26
Architecture Network on Chip Cluster d entrée/sortie Cluster d entrée/sortie Cluster Cluster Cluster Cluster Cluster Cluster Cluster Cluster Cluster Cluster Cluster Cluster Cluster Cluster Cluster Cluster Cluster d entrée/sortie 16 clusters 4 clusters d entrée/sortie NoC gravure en 28 nm Cluster d entrée/sortie 5 / 26
Architecture Clusters Interface Interface système Unité bug 64 registres 32 bits Mémoire partagée VLIW + vectoriel Mémoire partagée : 2 Mo/cluster NoOS 6 / 26
Architecture Entrées/sorties Machine hôte (Fedora) Mppa-Developer Mppa Board Réseau via Ethernet Puce Mppa Mémoire vive Autre puce Mppa 7 / 26
Architecture Entrées/sorties Machine hôte (Fedora) Mppa-Developer Mppa Board Réseau via Ethernet Puce Mppa Mémoire vive Autre puce Mppa 7 / 26
Programmation Deux paradigmes Explicitement parallèle (bas niveau) POSIX-Threads OpenMP MPI (portage en cours) OpenCL (portage en cours) Dataflow (haut niveau) Langage Sigma-C 8 / 26
Agents Le langage Sigma-C - les agents entrée 0 = sortie entrée 1 Agent agent ag_name ( parameters ) { interface { in <input_t > input0 ; in <input_t > input1 ; out <output_t > output ; spec { { input0 [2]; output0 } ; { input1 } ; { output0 [3]} }; }... } 9 / 26
Agents Les agents, s machines à états get 1 data from input1 get 2 data from input0 send 1 data to output0 send 3 data to output0 interface {... spec { { input0 [2]; output0 } ; { input1 } ; { output0 [3]} }; } void foo ( int a) exchange ( input0 inp [2], output0 outp ) { outp = a* inp [0] + inp [1]; }... void start () { foo (2);... } 10 / 26
Subgraphs Le langage Sigma-C - les subgraphs Agent 2 Agent 4 Agent 1 Agent 3 Agent 5 subgraph subgr () {... map { agent ag1 = new agname (...); agent ag2 = new agname (...);... connect ( ag1. output0, ag2. input ); connect ( ag1. output1, ag3. input );... } } 11 / 26
Accélération matérielle Accélération matérielle sur Mppa-Manycore Machine hôte Clusters d entrée/sortie Clusters Lecture Transfert Traitement Transfert Écriture 12 / 26
Agents pour analyse d image Développement d agents Sigma-C pour l analyse d images Plusieurs types d agents développés opérateurs arithmétiques unaires (une image en entrée + un paramètre) binaires (ux images en entrée) opérateurs morphologiques érosion, dilation, convolution cœur boucle en assembleur (développé par Kalray) opérateurs mesure min et max (avec ou sans leurs coordonnées), volume 13 / 26
L existant - le framework Freia Freia, un framework pour l analyse d image Application d analyse d image Framework Freia Fulguro OpenCL SPoC Terapix Implémentation logicielle Accélérateurs matériels Implémentations s opérateurs d analyse d image 14 / 26
L existant - le framework Freia Freia, un framework pour l analyse d image Application d analyse d image Compilateur source à source Pips Framework Freia Application optimisée Fulguro OpenCL SPoC Terapix Implémentation logicielle Accélérateurs matériels Implémentations s opérateurs d analyse d image 14 / 26
L existant - le framework Freia Freia, un framework pour l analyse d image Application d analyse d image Compilateur source à source Pips Framework Freia Application optimisée Fulguro OpenCL SPoC Terapix Mppa Implémentation logicielle Accélérateurs matériels Implémentations s opérateurs d analyse d image 14 / 26
Application au Sigma-C Principe Passer freia_aipo_ero_8c ( imero, imin, kernel ); freia_aipo_dilate_8c ( imdilate, imero, kernel ); freia_aipo_and ( imout, imdilate, imin ); à subgraph foo () {... int16_t kernel [9] = {0,1,0, 0,1,0, 0,1,0};... agent ero = new img_ero ( kernel ); agent dil = new img_dilate ( kernel ); agent and = new img_and_img ();... connect ( ero. output, dil. input ); connect ( dil. output, and. input );... } 15 / 26
Application au Sigma-C Compilation co Sigma-C Structures intermédiaires DAG liste s sommets, entrées et sorties vertex opération, paramètres, liste s successeurs Génération co Sigma-C Pour chaque vertex : déclarer les paramètres instancier l agent correspondant avec les bons paramètres connecter l agent à ses successeurs insérer s agents réplication si plus sorties que spécifié 16 / 26
Gestion s transferts Retour sur le modèle d accélérateur matériel Machine hôte Clusters d entrée/sortie Clusters Lecture Transfert Traitement Transfert Écriture 17 / 26
Gestion s transferts Inconvénients du modèle Transferts inter clusters communications : 100 cycles mémoire d un cluster : 2 Mo = transferts ligne à ligne Transferts hôte - clusters Transferts + coûteux transfert d un seul tenant dans la mémoire vive la puce streaming ligne par ligne la mémoire vers les clusters 18 / 26
Gestion s transferts Inconvénients du modèle Lecture et écriture sur disque garr la dépendance à Freia chargement et sauvegar s images architecture en ux exécutables Freia manipule les images Sigma-C effectue les traitements communications par pipes nommés (sign Kalray) 18 / 26
Architecture logicielle Architecture d une application Sigma-C - Freia binaire Freia Lecture Machine hôte Création s pipes Clusters d entrée/sortie Clusters Ordre malloc Transfert Malloc sur DDR Envoi l image Lancement traitement Retour l image communication par pipes nommés Transfert Transfert Transfert Stockage sur DDR Streaming l image Stockage en DDR Envoi puis la DDR Traitement Ordre free Transfert Free sur DDR Écriture Agents SigmaC (co généré par Pips) 19 / 26
L application licenseplate Application licenceplate - présentation 20 / 26
L application licenseplate Application licenceplate - présentation 20 / 26
L application licenseplate Application licenseplate - DAG Ouverture 15 Seuillage Lecture ET binaire Fermeture 8 Seuillage Écriture ET binaire Dilatation 3 Ouverture 3 21 / 26
L application licenseplate Comparaison s temps traitement Performances s différentes cibles 37 36 32 Temps traitement (ms) 21 14 22 7.3 2.3 Mppa SPoC Terapix Intel dual-core AMD quad-core GeForce 8800 GTX Quadro 600 Tesla C 2050 22 / 26
L application licenseplate Consommation énergétique Consommation énergétique théorique s différentes cibles 240 Consommation énergétique (W) 65 60 120 40 5?? Mppa SPoC Terapix Intel dual-core AMD quad-core GeForce 8800 GTX Quadro 600 Tesla C 2050 23 / 26
Résultats obtenus Résultats obtenus sur les autres applications App. Mppa SPoC Terapix Intel AMD dual-core quad-core anr999 29 0.9 3.5 12.2 7.2 licenseplate 21 13.6 36.8 32.2 21.9 oop 35 124.6 63.3 12.3 8.3 toggle 33 12.6 4.3 15.0 9.0 App. Mppa GeForce Quadro Tesla 8800 GTX 600 C 2050 anr999 29 9.8 1.5 0.9 licenseplate 21 36.6 7.3 2.3 oop 35 5.8 1.8 1.0 toggle 33 6.3 1.4 0.7 24 / 26
En conclusion bibliothèque d agents Sigma-C pour l analyse d image génération via Pips co applicatif intégré au framework Freia plusieurs applications fonctionnelles optimisations s temps d exécution future work : amélioration performances, support d autres applications... 25 / 26
Portage et optimisation d applications traitement d images sur architecture Kalray Mppa-Manycore Journées la Compilation Pierre Guillou Centre recherche en informatique Mines ParisTech 4 décembre 2013 26 / 26