FREIA ANR-AF-2007-004
Présentation finale projet FREIACongrès ANR à Lyon
4 janvier 2012
Michel Bilodeau (CMM MINES ParisTech/ARMINES)Christophe Clienti (Thales TRT, CMM MINES ParisTech/ARMINES)
Fabien Coelho (CRI MINES ParisTech/ARMINES)Serge Guelton (Télécom Bretagne)
François Irigoin (CRI MINES ParisTech/ARMINES)Ronan Keryell (Télécom Bretagne)Fabrice Lemonnier (Thales TRT)
Objectifs
“... vise a concevoir et implementer une plate-forme flexible etefficace de traitement d’images ET ses outils d’optimisation pourdes applications en embarque...”“... dans les domaines de la surveillance, du transport...”
4 janvier 2012 ANR-AF-2007-004 – projet FREIA 2
MotivationsDeveloppement d’applications
FulguroFulguro
OpenCLOpenCL CPU ||GPU
CPU ||GPU
CPUCPU
Ter@pixTer@pixCPUCPU
SpoCSpoCCPUCPU
MGter@pix
MGter@pix
Cibles
SpoCLib
SpoCLib
CPU ||GPU
CPU ||GPU
CPUCPU
Ter@pixTer@pixCPUCPU
SpoCSpoCCPUCPU
#include <freia.h>
main () {
dilate(out, in) ; convolution(out, }
#include <freia.h>
main () {
dilate(out, in) ; convolution(out, }
Cibles
4 janvier 2012 ANR-AF-2007-004 – projet FREIA 3
Introduction
Plate-forme et interfaces logicielles
Outils d’optimisation
Conclusion
4 janvier 2012 ANR-AF-2007-004 – projet FREIA 4
Introduction
Plate-forme et interfaces logicielles
Outils d’optimisation
Conclusion
4 janvier 2012 ANR-AF-2007-004 – projet FREIA 5
FREIA — Infrastructure et interfaces materielles
CPU ||GPU
CPU ||GPU
CPUCPU
Ter@pixTer@pixCPUCPU
SpoCSpoCCPUCPU
#include <freia.h>
main () {
dilate(out, in) ; convolution(out, }
#include <freia.h>
main () {
dilate(out, in) ; convolution(out, }
Cibles
Contributions: Thales, CMM
4 janvier 2012 ANR-AF-2007-004 – projet FREIA 6
WP1: Infrastructure d’accueil
I Controle generique de l’accelerateur
I Pilotage generique du transfert de donnees
I Modele maıtre/esclave asynchrone base sur un protocole derequete et de synchronisation
4 janvier 2012 ANR-AF-2007-004 – projet FREIA 7
WP1: Interfaces materiellesDefinition d’interfaces materielles generiques :I Interface d’echange de donnees :
I Livraison des donnees sur plusieurs canauxI Specificite d’acheminement laissee a l’accelerateur
I Interface de controle :I Controle de l’acheminement des donneesI Controle du sequencement des calculsI Gestion des synchronisations transferts/calculs programmable
→ Garantir l’interchangeabilite des accelerateurs au sein de lastructure d’accueil
Ter@pix
DMA
DMU
Data
Accelerator
Specific Registers
Accelerator
Specific Address Space
Acc IF
DataAccIF
Reconfigurable areaAcc Stub
MCU Controller
Global RAMRAM code
RAM
RAM
PE
PE
RAM PE SIM
D A
RR
AY
Ter@pix
SPoC
SPoC
DMA
FIFO SYN
C
Data
Accelerator Specific
Registers
Accelerator Specific Address Space
Acc IF
DataAccIF
Reconfigurable area
Acc Stub
FIFO IN 0
FIFO IN 1
FIFO OUT 0
FIFO OUT 1
Co
ntr
olle
r
PoC
AL
UX
BA
R
PoC
AL
UX
BA
RPoC PoC
4 janvier 2012 ANR-AF-2007-004 – projet FREIA 8
WP1: Nouveau processeur voisinage grande taille
Bart Machine
BARTDMA
FIFO SYNC
Data
Accelerator Specific
Registers
Accelerator Specific
Address Space
Acc IF
DataAccIF
Reconfigurable areaAcc Stub
FIFO IN 0
FIFO IN 1
FIFO OUT 0
FIFO OUT 1
FS
M AL
UX
BA
R
AL
UX
BA
RA
LU
XB
AR
FIF
O
STA
CK
4 janvier 2012 ANR-AF-2007-004 – projet FREIA 9
FREIA — interfaces logicielles et run-time
AIPO fulguro
AIPO fulguro
AIPO OpenCL
AIPO OpenCL
AIPO SpoC
AIPO SpoC
AIPO ter@pix
AIPO ter@pix
OpenCLOpenCL
CGSpoC
CGSpoC
CGterapix
CGterapix
CGOpenCL
CGOpenCL
CPU ||GPU
CPU ||GPU
CPUCPU
Ter@pixTer@pixCPUCPU
SpoCSpoCCPUCPU
HALter@pix
HALter@pix
#include <freia.h>
main () {
dilate(out, in) ; convolution(out, ... }
#include <freia.h>
main () {
dilate(out, in) ; convolution(out, ... }
CIPOCIPO
Runtime CiblesLibrairies
FulguroFulguro
HALSpoC
HALSpoC
Contributions: Thales, CMM
4 janvier 2012 ANR-AF-2007-004 – projet FREIA 10
WP1: Librairie d’execution – Ordonnancement
Ordonnancement mis en œuvre dans la couche CG, deux grandesclasses :I Ordonnanceur simple :
I La couche CG vers Fulguro est un simple proxy vers unelibrairie rapide de traitement d’images
I SPoC etant un accelerateur pipeline travaillant sur des images,la distribution des donnees est simplifiee.
I Ordonnanceur complexe a cause de la gestion memoire surl’accelerateur :
I Optimisation des transferts memoires CPU–GPU pourl’OpenCL
I Optimisation de la memoire interne de Ter@pix qui ne peutcontenir que des sous-images
4 janvier 2012 ANR-AF-2007-004 – projet FREIA 11
WP1: Plateforme de simulations
I La cible Fulguropermet ledeveloppement rapidesur station de travail
I Deux simulateurs auniveau fonctionnelsont ete realises
I Ces simulateurspermettent lavalidation del’application sur lesaccelerateurs ciblesavant optimisationpar les outils
Application
AIPO API
Coarse Grained impl.
HAL API
Coarse Grained API
CIPO API
CIPO impl.
SimulateurTerapix
AIPO impl
Application
AIPO API
Coarse Grained API
CIPO API
CIPO impl.
SimulateurSPoC
AIPO impl
Application
AIPO API
Coarse Grained API
CIPO API
CIPO impl.
Fulguro
AIPO impl
4 janvier 2012 ANR-AF-2007-004 – projet FREIA 12
Introduction
Plate-forme et interfaces logicielles
Outils d’optimisation
Conclusion
4 janvier 2012 ANR-AF-2007-004 – projet FREIA 13
FREIA — outils d’optimisation a gros grain avec PIPS
AIPO fulguro
AIPO fulguro
AIPO OpenCL
AIPO OpenCL
AIPO SpoC
AIPO SpoC
AIPO ter@pix
AIPO ter@pix
OpenCLOpenCL
CGSpoC
CGSpoC
CGterapix
CGterapix
CGOpenCL
CGOpenCL
CPU ||GPU
CPU ||GPU
CPUCPU
Ter@pixTer@pixCPUCPU
SpoCSpoCCPUCPU
HALter@pix
HALter@pix
#include <freia.h>
main () {
dilate(out, in) ; convolution(out, ... }
#include <freia.h>
main () {
dilate(out, in) ; convolution(out, ... }
CIPOCIPO
Runtime CiblesLibrairies
FulguroFulguro
HALSpoC
HALSpoC
Contributions: CRI
4 janvier 2012 ANR-AF-2007-004 – projet FREIA 14
FREIA — outils d’optimisation a gros grain avec PIPS
AIPO fulguro
AIPO fulguro
AIPO OpenCL
AIPO OpenCL
AIPO SpoC
AIPO SpoC
AIPO ter@pix
AIPO ter@pix
OpenCLOpenCL
CGSpoC
CGSpoC
CGterapix
CGterapix
CGOpenCL
CGOpenCL
CPU ||GPU
CPU ||GPU
CPUCPU
Ter@pixTer@pixCPUCPU
SpoCSpoCCPUCPU
HALter@pix
HALter@pix
#include <freia.h>
main () {
dilate(out, in) ; convolution(out, ... }
#include <freia.h>
main () {
dilate(out, in) ; convolution(out, ... }
SpoC Optimiseur
Ter@pix Optimiseur
Librairiefulguro
Runtime CiblesLibrairies
OpenCL optimiseur
FulguroFulguro
HALSpoC
HALSpoC
Contributions: CRI
4 janvier 2012 ANR-AF-2007-004 – projet FREIA 15
WP3.1/3.5/3.6 Compilateur gros grain
entree code C code avec appels a API FREIA
I allocation, I/O, operations imagesI CIPO (complex) et AIPO (atomic)I hypotheses: code sans bug, un seul type image
f r e i a d a t a 2 d ∗ im1 = f r e i a c ommon c r e a t e d a t a ( . . . ) ;f r e i a common rx image ( im1 , &i n ) ;f r e i a a i p o g l o b a l m i n ( im1 , &min ) ;f r e i a c i p o d i l a t e ( im2 , im1 , 8 , 1 0 ) ;f r e i a a i p o s u b s a t ( im2 , im1 , im2 ) ;f r e i a common tx image ( im2 , &out ) ;f r e i a c ommon de s t r u c t d a t a ( im1 ) ;
sortie code C, configuration des accelerateursenvironnement d’execution adapte a la cible
I SPoC : vecteurs d’instructions combineesI Ter@pix : allocation d’images pour proc. SIMDI OpenCL : aggregation d’operateurs simples
4 janvier 2012 ANR-AF-2007-004 – projet FREIA 16
Phases de la compilation (1/3)
1. Preparation du source – PIPS
I materialisation des sequences d’appels AIPO de l’arbre d’appel
I inlining, evaluation partielle, deroulage des boucles,elimination code mort, applatissement. . .
I elimination des images inutilisees
f r e i a a i p o g l o b a l m i n ( im1 , &min ) ;f r e i a a i p o d i l a t e 8 c ( im2 , im1 , f r e i a mo r p h o k e r n e l 8 c ) ;f r e i a a i p o d i l a t e 8 c ( im2 , im2 , f r e i a mo r p h o k e r n e l 8 c ) ;f r e i a a i p o d i l a t e 8 c ( im2 , im2 , f r e i a mo r p h o k e r n e l 8 c ) ;f r e i a a i p o d i l a t e 8 c ( im2 , im2 , f r e i a mo r p h o k e r n e l 8 c ) ;f r e i a a i p o d i l a t e 8 c ( im2 , im2 , f r e i a mo r p h o k e r n e l 8 c ) ;f r e i a a i p o d i l a t e 8 c ( im2 , im2 , f r e i a mo r p h o k e r n e l 8 c ) ;f r e i a a i p o d i l a t e 8 c ( im2 , im2 , f r e i a mo r p h o k e r n e l 8 c ) ;f r e i a a i p o d i l a t e 8 c ( im2 , im2 , f r e i a mo r p h o k e r n e l 8 c ) ;f r e i a a i p o d i l a t e 8 c ( im2 , im2 , f r e i a mo r p h o k e r n e l 8 c ) ;f r e i a a i p o d i l a t e 8 c ( im2 , im2 , f r e i a mo r p h o k e r n e l 8 c ) ;f r e i a a i p o s u b s a t ( im2 , im1 , im2 ) ;
4 janvier 2012 ANR-AF-2007-004 – projet FREIA 17
Phases de la compilation (2/3)
2. DAG d’expressions image
I construction du DAG des sequences d’appels AIPO
I normalisation, simplifications algebriques
I propagation de constantes, elimination expressions communes
I elimination des copies inutiles (avant et arriere)
DAG resultants pour application OOP (Out of position)
i0 =
i1
E8
D8
E8
D8
i2
E8
D8
othr<
D6E6
-|
-
-
D6E6-|-
-
E8
D8
=
i0
E8
D8
i1
E8
D8
i2
E8
D8
othr<
D6E6-|
-
D6E6-|
-
-
4 janvier 2012 ANR-AF-2007-004 – projet FREIA 18
Phases de la compilation (3/3)
3. generation de code ou de configurations
Fulguro librairie logicielleregeneration des appels AIPO du DAG optimise
SPoC deux images vivantes maxdecoupage du graphe plutot horizontal
Ter@pix calculs sur imagettes avec usure des bordsdecoupage du graphe vertical, par niveau d’erosion
OpenCL regroupement d’operateurs simples (1-1)generation de noyaux de calculs optimises
4 janvier 2012 ANR-AF-2007-004 – projet FREIA 19
Performances obtenues
I applications FREIA (video, medicales. . . )
I moyenne geom. des acceleration vs librairie optimisee
SPoC 7.09 materiel bien adapte aux applications
I code optimal sur la plupart des exemples
Ter@pix 2.92 borne par recouvrement calculs/comm.
OpenCL 1.59 version librairie bien optimisee
I pas de fusion des erosions/dilatations successivesI l’executif minimise deja les comm. hote/carte
4 janvier 2012 ANR-AF-2007-004 – projet FREIA 20
FREIA — outil d’optimisation SpearDE
AIPO fulguro
AIPO fulguro
AIPO OpenCL
AIPO OpenCL
AIPO SpoC
AIPO SpoC
AIPO ter@pix
AIPO ter@pix
OpenCLOpenCL
CGSpoC
CGSpoC
CGterapix
CGterapix
CGOpenCL
CGOpenCL
CPU ||GPU
CPU ||GPU
CPUCPU
Ter@pixTer@pixCPUCPU
SpoCSpoCCPUCPU
HALter@pix
HALter@pix
#include <freia.h>
main () {
dilate(out, in) ; convolution(out, ... }
#include <freia.h>
main () {
dilate(out, in) ; convolution(out, ... }
Runtime CiblesLibrairies
Optimiseur graphique Spear DE
FulguroFulguro
HALSpoC
HALSpoC
Contributions: Thales
4 janvier 2012 ANR-AF-2007-004 – projet FREIA 21
FREIA — outils d’optimisation grain fin avec PIPS
AIPO fulguro
AIPO fulguro
AIPO OpenCL
AIPO OpenCL
AIPO SpoC
AIPO SpoC
AIPO ter@pix
AIPO ter@pix
OpenCLOpenCL
CGSpoC
CGSpoC
CGterapix
CGterapix
CGOpenCL
CGOpenCL
CPU ||GPU
CPU ||GPU
CPUCPU
Ter@pixTer@pixCPUCPU
SpoCSpoCCPUCPU
HALter@pix
HALter@pix
#include <freia.h>
main () {
dilate(out, in) ; convolution(out, ... }
#include <freia.h>
main () {
dilate(out, in) ; convolution(out, ... }
Runtime CiblesLibrairies
uCodeter@pix
uCodeter@pix
for(j=0;j<9;j++) a[i] = b[i] *n[j] ;
for(j=0;j<9;j++) a[i] = b[i] *n[j] ;
Générateur code Ter@pix
FulguroFulguro
HALSpoC
HALSpoC
Contributions: TELECOM Bretagne, co-tutelle CRI
4 janvier 2012 ANR-AF-2007-004 – projet FREIA 22
WP3.2/3.4: Generation de code pour le grain fin et moyen
Objectif
Generer automatiquement un microcode Ter@pix a partir de saversion C.
Methodologie
1. Identifier les contraintes materielles propre a la cible
2. Utiliser des passes de compilation originales pour lever cescontraintes
3. Assembler un compilateur qui chaıne ces transformations defacon automatique
4 janvier 2012 ANR-AF-2007-004 – projet FREIA 23
WP3.2/3.4: Generation de code pour grain fin et moyenApproche basee sur l’infrastructure de compilation PIPS
Compilation source-a-source
Pour interagir avec les outils existants chez Thales
Reutilisation de briques existantes
Pour la detection de boucles paralleles, la transformation de nidsde boucles et les analyses interprocedurales
Contributions
I Transformations de code pour extraire une procedure d’unbloc [outlining], generer les communications [statementisolation], dimensionner un pavage de boucle [symbolic tiling]. . .
I Gestionnaire de passe programmable pour exprimer desschemas de compilation complexes
4 janvier 2012 ANR-AF-2007-004 – projet FREIA 24
WP3.2/3.4: Generation de code pour grain fin et moyenSchema de compilation
Application Code
Translator
Sequential C Code+
kernel call
C Compiler
HostBinary
Sequential C Code=
kernel
Ter@pixPostProcessor
Assembly(not compacted)
Ter@pixCompactor
Assembly(compacted)
Ter@pixAssembler
MicrocodeBinary
Involves
I 1+1 source-to-sourcecompilers
I 1+1 source-to-binarycompilers
I 1 code compactor
4 janvier 2012 ANR-AF-2007-004 – projet FREIA 25
WP3.2/3.4: Generation de code pour grain fin et moyenMesure sur l’efficacite du code produit
Manuel vs. Automatique
Rapport entre le nombre de cycle de microcode en automatique etmanuel.
brightness horizontal convolution vertical erode convolutionautomaticmanual ×1 ×1.31 ×2.12 ×1.31
Bonne performance pour un outil automatique
Ralentissement du a:
I Selection des instructions locales
I Utilisation de registres lents plutot que des accumulateurs plusrapides
4 janvier 2012 ANR-AF-2007-004 – projet FREIA 26
Dissemination
communication
I Fabrice Lemonnier. Architecture distribuee programmablepour traitement d’images implementee sur FPGA. GDR ISISC, juin 2008
I Fabien Coelho, Compilation and Code Generation of ImageProcessing Applicaations for Hardware Accelerators ,Seminaire du LIP6, Paris, France, feb 2012
I Christophe Clienti, Presentation du demonstrateurSPoC/FREIA, Technoday Thales, 2011
I Christophe Clienti, Presentation de l’outil SpearDE dans lecontexte Terapix/FREIA, Technoday Thales, 2010
I Fabien Coelho, Francois Irigoin, Compiling for aHeterogeneous Vector Image Processor, PIPS Developer Day,Lille 2010
Groupes de travail
I R. Keryell: GPU and multi-core GDR ASR and INRIA4 janvier 2012 ANR-AF-2007-004 – projet FREIA 27
Dissemination
Conferences
I Ronan Keryell. Par4All: Auto-Parallelizing C and Fortran forthe CUDA Architecture. Nvidia GPU Technology Conference,Sep 30 2009
I Fabien Coelho, Francois Irigoin, Compiling for aHeterogeneous Vector Image Processor, Workshop onOptimizations for DSP and Embedded Systems (ODES’9),april 2011
I Serge Guelton, Sebastien Varrette. Une approche genetique etsource a source de l’optimisation de code. conferenceRenPar’19/SympA’13/CFSE’6, 9 septembre 2009
I Serge Guelton, Mehdi Amini, Ronan Keryell, and BeatriceCreusillet. PyPS, a programmable pass manager. poster forInternational Workshop on Languages and Compilers forParallel Computing, September 2011. Fort Collins, Colorado,USA.
4 janvier 2012 ANR-AF-2007-004 – projet FREIA 28
Dissemination
Conferences
I Serge Guelton, Adrien Guinet, and Ronan Keryell. Buildingretargetable and efficient compilers for multimedia instructionsets. poster for Parallel Architectures and CompilationTechniques, October 2011. Galveston, Texas, USA
I Serge Guelton, Francois Irigoin, and Ronan Keryell.Automatic and source- to-source code generation for vectorhardware accelerators. Colloque National du GDR SOC-SIP,June 2010. Cergy, France.
I Serge Guelton. A genetic and source-to-source approach toiterative compilation. ACM Student Research CompetitionPosters, Parallel Architectures and Compilation Techniques,September 2009. Raleigh, North Carolina, USA.
4 janvier 2012 ANR-AF-2007-004 – projet FREIA 29
Dissemination
Conferences
I Serge Guelton. Automatic source-to-source code generationfor vector hardware accelerators . poster at InternationalWorkshop on Languages and Compilers for ParallelComputing, October 2010. Houston, Texas, USA.
I J. Bartovsky, E. Dokladalova, P. Dokladal, and V. Georgiev.Pipeline architecture for compound morphological operatorsIEEE International Conference on Image Processing (ICIP),pages 3765 –3768, Sept. 2010.
I Clienti C., Beucher S., Bilodeau M. A System on ChipDedicated to Pipeline Neighborhood Processing ForMathematical Morphology. EUSIPCO 2008, Aug 25-29,Lausanne
4 janvier 2012 ANR-AF-2007-004 – projet FREIA 30
Introduction
Plate-forme et interfaces logicielles
Outils d’optimisation
Conclusion
4 janvier 2012 ANR-AF-2007-004 – projet FREIA 31
Conclusion
I Chaıne complete d’outils libres d’optimisation pour le grosgrain et moyen
I Definition d’interfaces logicielles et de leur implementationI Bibliotheque d’executionI Simulateurs multi-niveaux
I Fonctionnel (haut niveau, effet de bord source a source)I Comportemental (bas niveau)
I Generation de code avec de tres bonnes performances pourplusieurs cibles.
I Interface materielle standardisee testee sur un nouvel IPI Base outil plus generique Par4All
I Creation entreprise HPC Project (30+ personnes, recrute...)I Transfert equipe de TELECOM Bretagne dont thesard du
projet
I Utilise dans autres projets pour autres cibles (GPU, CEASCMP, ST P2012, Kalray MPPA...)
4 janvier 2012 ANR-AF-2007-004 – projet FREIA 32