34
FREIA ANR-AF-2007-004 Présentation finale projet FREIA Congrè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)

Présentation finale projet FREIA Congrès ANR à Lyon · 4 janvier 2012 ANR-AF-2007-004 { projet FREIA 8. ... WP1: Librairie d’ex ecution { Ordonnancement Ordonnancement mis en

  • Upload
    lekhanh

  • View
    219

  • Download
    0

Embed Size (px)

Citation preview

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)

Freia ANR-AF-2007-004

4 janvier 2012rev:2061

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

Liens

I http://freia.enstb.org

I http://pips4u.org

4 janvier 2012 ANR-AF-2007-004 – projet FREIA 33