EPSN : premiers pas Intgration de LOSS4D Olivier Coulaud - PowerPoint PPT Presentation

1 / 54
About This Presentation
Title:

EPSN : premiers pas Intgration de LOSS4D Olivier Coulaud

Description:

Approche dirig e par le pilote, la visualisation (syst me de requ te) ... A chaque objet on peut associer une ou plusieurs s ries. S rie : une variable du code ... – PowerPoint PPT presentation

Number of Views:84
Avg rating:3.0/5.0
Slides: 55
Provided by: coul8
Category:

less

Transcript and Presenter's Notes

Title: EPSN : premiers pas Intgration de LOSS4D Olivier Coulaud


1
EPSN premiers pasIntégration de
LOSS4DOlivier Coulaud
Journées MASSIM 13 nov. 2006
2
Plan
  • Lenvironnement EPSN
  • Modèle
  • Plate forme
  • Intégration dune simulation
  • API F90 et le fichier XML
  • Équation de la chaleur
  • Intégration de loss4d

3
EPSN un environnement de pilotage de simulation
parallèle
4
Objectifs de lenvironnement EPSN
  • Utilisation
  • Intégration  facile  dune simulation parallèle
    (SPMD) déjà existante
  • Approche dirigée par le pilote, la visualisation
    (système de requête)?
  • Plusieurs niveaux de pilotage dans le code
  • Représentation de la simulation (positionner les
    données dans la simulation)?
  • Validation sur des applications de grande taille
  • Filtrage des données et/ou algorithme multi
    niveaux
  • Performance
  • Ne pas trop perturber la simulation
  • Pas être intrusif thread pour lenvironnement
    de pilotage (requêtes).
  • Extraction des données
  • Nécessite de recouvrir Calculs/Communications
    (plages daccès)?
  • Flux de transfert parallèle
  • Réactivité

5
Points clés de lenvironnement
  • Interactions à distance
  • Contrôle de lavancement de la simulation
  • Accès en mémoire aux données
  • Déclenchement des actions développées par
    lutilisateur
  • Performance
  • Ni traitement ni synchronisation hors des
    requêtes de lutilisateur
  • Recouvrement des communications vers la
    visualisation par le calcul de la simulation
  • Planification à la volée des traitements de
    pilotage
  • RedSYM bibliothèque de redistribution des
    données scientifiques
  • Scalaire, tableaux, particules, maillages non
    structurés
  • Bloc cyclique, rectilinéaire, partitionnement de
    maillage
  • Flux parallèles - MxN

6
Le modèle Abstrait de pilotage
  • Coté simulation
  • Décrire la simulation (données, structure du
    code)
  • Description des actions possibles
  • Coté client
  • Pilotage basé par un jeu réduit de requêtes
  • Annotation des sources
  • Région pilotable (plage dinteraction)?

7
Modèle de description la structure du code (1)?
  • Idée représentation hiérarchique du code
  • Graphe de tâches hiérarchiques (HTG)?
  • Inspiré des travaux de Girkar Polychronopoulos
    (1994)?
  • Modèles Hiérarchiques de Tâches
  • Arbre de tâches
  • Capture du CFG

8
Modèle de description la structure du code (2)?
  • Les tâches du modèle
  • Basic (bloc de lignes)?
  • Boucle (while, for)?
  • Conditionnel (if, switch)?
  • Interaction
  • breakpoint
  • action point
  • writing point

MHT permet de définir un système de datation du
flot dexécution
9
Modèle de description accès aux données (1)?
  • Modèle daccès aux données
  • spécifie si une donnée est accessible, protégée
    ou modifiée
  • automatise le processus dinstrumentation pour
    les régions
  • accès et des dates de release des données
  • transfert efficace recouvrement des
    communications zero-copy sending

10
Modèle de description accès aux données (2)?
  • Le principe

11
Modèle de description accès aux données (3)?
12
Modèle de description cas dun code parallèle
  • Structure du code
  • Tous les processus suivent le même MHT
  • On passe par la même structuration du code
  • On a le même type et structure des dates
  • Il faut coordonner les requêtes
  • Éviter la synchronisation
  • Planifier une date dans un futur proche

13
Transferts de données / Redistribution
Approche générique de la redistribution de données
  • Flux parallèle
  • Découpe les messages pour maximiser le débit
  • Description symbolique des données
  • Distribution des données entre les processeurs
  • Organisation en mémoire des données sur un
    processeur.

M
Matrice de communications
  • Approche modulaire et performante

14
Le modèle de données dans EPSN
  • Objets complexes
  • Scalaires, tableaux, particules, maillages non
    structurés
  • Plusieurs séries de données (vitesse, pression,
    )?
  • Distributions
  • Objets réguliers approche spatiale HPF,
    rectilinéaire, implicite
  • Objets irréguliers

15
Le modèle de données dans EPSN
  • Description symbolique des données approche
    spatiale
  • Distribution des données entre les processeurs
  • Organisation en mémoire des données sur un
    processeur
  • 3 étapes
  • Décrire le domaine global
  • Bloc (0,0) (N,M)?
  • Décrire les domaines (blocs) que lon possède
  • Bloc (X,Y) (Xa,Yb)?
  • Décrire lagencement mémoire de ces blocs
  • Bloc (X-offset,Y-offset) (Xaoffset,Yboffset)
    ?

(X,Y)?
16
LArchitecture EPSN
17
Architecture en couche
  • Deux APIs
  • Description de la structure du code (MHT) - EPSN
  • Description des données - RedSYM

18
Architecture EPSN
  • Modèle de tâches hiérarchiques
  • Cohérence en temps
  • Synchronisation faible

Redistribution MxN RedGRID
19
Le client générique SImulation MONitoring
interface for Epsn
20
L'intégration d'une simulation
21
Processus dintégration
Annotation des sources
Code de simulation
Code de simulation annoté
Construction
Compilation
Code de simulation Pilotable
Description XML du MHT
Données Identifiant, distribution,
Modélisation de la simulation Identifiant des
tâches, contexte des données Interactions
Écriture, modifications, actions
Lecture
22
API Fortran 90
  • Deux types KIND
  • EPSN_KIND_STATUS
  • EPSN_KIND_HANDLE
  • Trois groupes de procédures
  • Procédures générales
  • EPSN_F90_Init
  • EPSN_F90_Finalise
  • EPSN_F90_Print
  • Gestion des données
  • EPSN_F90_Ready
  • EPSN_F90_AddData
  • EPSN_F90_UpdateData
  • Description de la structure du code
  • EPSN_F90_BeginHTM
  • EPSN_F90_EndHTM
  • EPSN_F90_BeginTask
  • EPSN_F90_EndTask
  • EPSN_F90_BeginLoop
  • EPSN_F90_EndLoop
  • EPSN_F90_Point
  • Une variable globale
  • EPSN_Status
  • EPSN_SUCCES
  • EPSN_FAILURE

23
API Fortran 90 (1)?
  • EPSN_F90_init( simulationName, xmlFilename,
    myrank, totalNumberOfProcs, proxyNode)?

Initialise l'environnement EPSN création de la
thread EPSN associée au processus de simulation
ainsi que le proxy. Inscription de la simulation
dans le service de nommage
24
API Fortran 90 (2)?
  • subroutine EPSN_F90_Finalize()
  • ferme l'environnement, supprime la simulation
    dans le service de nomage.

subroutine EPSN_F90_Print() Affiche des
informations sur la simulation EPSN Data
Simulation name loss4d XML
file name loss4d.xml Number of
processes 4 my rank 0 Proxy on
node 0
25
API Fortran 90 gestion des données
  • subroutine EPSN_F90_AddData( handle_var )?
  • INTEGER(EPSN_KIND_HANDLE), intent(IN)
    handle_var
  • Ajoute un descripteur d'une variable décrite par
    ReDSym dans EPSN.

subroutine EPSN_F90_UpdateData(name)? Spécifie
à l'environnement que la structure de donnée
associée à l'identifiant name a changé.
Nécessaire pour le caractère dynamique des
variables, cela peut impliquer de reconstruire la
matrice de communication.
subroutine EPSN_F90_Ready()? Spécifie à
l'environnement que les données sont accessibles
et allouées. A partir de cette fonction on peut
récupérer les données depuis un client.
26
API Fortran 90 Description du MHT (1)?
  • EPSN_F90_BeginHTM() Marque le début de la zone
    modélisée par le MHT
  • EPSN_F90_EndHTM() Marque la fin de la zone
    modélisée par le MHT

Exemple CALL EPSN_F90_BeginHTM()? DO J Jdeb,
Jfin DO I 1, NX Unp1(I,J)
ENDDO CALL EPSN_F90_EndHTM()?
Description en XML lthtm gt lt/htm gt
27
API Fortran 90 Description du MHT (2)?
  • EPSN_F90_BeginTask(name) Marque le début d'une
    tâche nommée name
  • EPSN_F90_EndTask(name) Marque la fin d'une tâche
    nommée name
  • name est l'identifiant de la tâche
  • Permet de définir une plage pour le traitement
    des requêtes

Exemple CALL EPSN_F90_BeginTask("update")? DO
J Jdeb, Jfin DO I 1, NX
Unp1(I,J) ENDDO CALL EPSN_F90_EndTask("u
pdate")?
Description en XML lttask id" update "gt lt/task
gt
28
API Fortran 90 Description du MHT (3)?
  • EPSN_F90_BeginLoop(name) Marque le début d'une
    boucle nommée name
  • EPSN_F90_EndLoop(name) Marque la fin d'une
    boucle nommée name
  • name est l'identifiant de la boucle
  • Permet de définir un compteur d'itérations
    (évolution des variables pilotables)
  • De plus, il faut mettre le corps de la boucle
    dans une tâche.

Exemple CALL EPSN_F90_BeginLoop(
"timeLoop")? DO t 1, NB_ITERMAX !
Time loop CALL EPSN_F90_BeginTask("bodyLoop")?
.. CALL EPSN_F90_BeginTask(" bodyLoop
")? END DO CALL EPSN_F90_EndLoop( "timeLoop")?
Description en XML ltloop id"timeLoop"gt lttask id
" bodyLoop " /gt lt/loopgt
29
API Fortran 90 Description du MHT (3)?
  • EPSN_F90_Point(name) tâche ponctuelle
  • name fait référence au non de la tâche
    ponctuelle décrite dans le MHT
  • Forcément un surcoût si une requête est traitée
    ou si une action est activée

Exemple CALL EPSN_F90_Point( " BeforeTimeLoop
")? DO t 1, NB_ITERMAX ! Time
loop .. END DO
Description en XML ltpoint id"BeforeTimeLoop" /gt
30
Le fichier XML
  • Décrit le modèle de pilotage
  • data décrit les données du code
  • interaction décrit les actions successibles
    dêtre lancées
  • htm capture la structure du code et spécifie le
    contexte des données
  • Structure du MHT

lt?xml version"1.0" encoding"UTF-8"
?gt ltsimulation id"heat"gt ltdatagt lt/datagt ltintera
ctiongt lt/interactiongt lthtm gt lt/htmgt lt/simulati
ongt
31
Le fichier XML (Les données)
  • Le groupe data représente les objets complexes de
    RedSYM
  • Différents types scalar, grid, points, mesh
  • lttype id"name" label"texte" /gt
  • A chaque objet on peut associer une ou plusieurs
    séries
  • Série une variable du code
  • ltserie id"name" label"texte" /gt
  • Exemple

ltdatagt ltpoints id"particles"gt
ltserie id"XYZ"/gt ltserie id"Charge"/gt
ltserie id"Mass"/gt ltserie
id"Velocity"/gt ltserie
id"Acceleration"/gt lt/pointsgt lt/datagt
32
Le fichier XML (Les interactions)
  • Le groupe interaction représente les actions que
    l'on pourra effectuer dans une tâche
  • ltaction id"name" distribution-kind
    "(locatedreplicated)" label"texte" /gt
  • Les champs
  • distribution-kind spécifie comment est lancée
    l'action
  • Exemple

ltinteractiongt ltaction id"particles"gt lt/i
nteraction gt
33
Le fichier XML (la structure du code)
  • Le groupe htm représente la structure du code
  • Déclaration lthtm auto-start"truefalse"gt
  • auto-start spécifie si la simulation démarre
    toute seule ou si elle est stoppée sur la
    procédure EPSN_F90_BeginHTM(). Dans ce cas elle
    devra être débloquée par un client EPSN.
  • Les différents attributs
  • Structure du code
  • task, loop, switch, point
  • Contexte
  • data-context, action-context, bench-context

34
Le fichier XML (la structure du code)
  • Les attributs de contrôle task, loop, switch,
    point
  • lttype synchronize(noautoblock) id"name"
    label"texte" /gt
  • Les champs
  • type task, loop, switch, point
  • synchronize spécifie si on doit synchroniser
    lorsque l'on rentre ou l'on sort de la structure,
    attribut optionnel. Par défaut la valeur est à no
  • auto synchronise équivalent à MPI_BARRIER
  • block arrête la simulation sur la tâche

Exemple lttask id"A" synchronize"no"gt lt/taskgt
35
Le fichier XML (la structure du code)
  • Les attributs de contexte data-context
  • ltdata-context ref"name" context
    (readablewritableprotectedmodified)/gt
  • Les champs
  • ref identifiant de la variable. Il doit exister
    dans le groupe data
  • context spécifie si dans la portée ou tâche le
    statut de la variable
  • readable la variable est accessible en
    lecture
  • writable la variable est accessible en
    écriture
  • protected la variable n'est pas accessible
  • modified la variable n'est pas accessible
    et a été modifiée. Cette valeur permet de
    spécifier qu'une nouvelle valeur de la série a
    été produite

Exemple lttask id"advection"gt ltdata-context
ref"density" context"modified"/gt lt/taskgt
36
Le fichier XML (la structure du code)
  • Les attributs de contexte action-context
  • ltaction-context ref"name" context
    (allowedforbidden)/gt
  • Les champs
  • ref identifiant de laction. Il doit exister
    dans le groupe interactions
  • context spécifie si dans la portée ou tâche le
    statut de la variable
  • Allowed laction est autorisée dans la
    tâche
  • Forbidden laction est interdite dans la tâche

Exemple lttask id"advection"gt ltdata-context
ref"density" context"modified"/gt lt/taskgt
37
Le fichier XML (la structure du code)
  • Les attributs de contexte bench-context
  • ltbench-context frequency "freq"/gt
  • Le champ
  • frequency fréquence en nombre de step de la
    prise de temps, par défaut la valeur est à 1.

Exemple lttask idtimeLoop"gt ltbench-context
frequency 2"/gt lt/taskgt
38
Un exemple
39
Un exemple académique
  • Équation de la chaleur
  • Différences finies, grille structurée
  • Deux étapes
  • Mise à jour
  • Swap
  • Parallélisme MPI, maître, esclaves
  • Esclaves SPMD, distribution en ligne

40
Exemple annotation
CALL EPSN_F90_BeginLoop( "timeLoop")? DO t 1,
NB_ITERMAX ! Boucle en temps CALL
EPSN_F90_BeginTask("bodyLoop")? CALL
EPSN_F90_BeginTask("update")? DO J Jdeb,
Jfin DO I 1, NX Unp1(I,J)
ENDDO CALL EPSN_F90_EndTask("up
date")? CALL EPSN_F90_BeginTask("swap")?
Un(,) unp1(,) ! Swap
CALL EPSN_F90_EndTask("swap")? CALL
EPSN_F90_Point("after_update")? CALL
EPSN_F90_EndTask( "bodyLoop")? END DO CALL
EPSN_F90_EndLoop( "timeLoop")?
DO t 1, NB_ITERMAX ! Boucle en temps
DO J Jdeb, Jfin
DO I 1, NX Unp1(I,J)
ENDDO Un(,)
unp1(,) ! Swap
END DO
41
Exemple annotation
DO t 1, NB_ITERMAX ! Boucle en temps
DO J Jdeb, Jfin DO I 1,
NX Unp1(I,J) ENDDO
Un(,) unp1(,) ! Swap
END DO
CALL EPSN_F90_BeginLoop( "timeLoop")? DO t 1,
NB_ITERMAX ! Boucle en temps CALL
EPSN_F90_BeginTask("bodyLoop")? DO J
Jdeb, Jfin DO I 1, NX
Unp1(I,J) ENDDO CALL
EPSN_F90_BeginTask("swap")? Un(,)
unp1(,) ! Swap CALL
EPSN_F90_EndTask("swap")? CALL
EPSN_F90_Point("after_update")? CALL
EPSN_F90_EndTask( "bodyLoop")? END DO CALL
EPSN_F90_EndLoop( "timeLoop")?
42
Exemple description des données
  • USE redsym
  • INTEGER(EPSN_KIND_HANDLE) GlobalDomain,
    LocalDomain, AllocatedLocalDomain
  • INTEGER(EPSN_KIND_HANDLE) Distribution1D,bloc
    ks(1),grid
  • lower(1) 0 lower(2) 0 upper(1) Nx-1
    upper(2) Ny-1
  • call RedSYM_BlockInt_create(GlobalDomain,nb_dims,l
    ower,upper)?
  • NBB Ny/ NB_PROCS lower(2) NBBrank
    upper(2) lower(2)NBB
  • call RedSYM_BlockInt_create(blocks(1),nb_dims,lowe
    r,upper)?
  • call RedSYM_DistributionInt_create(Distribution1D,
    GlobalDomain, nb_blocks,blocks)
  • call RedSYM_Grid_create( grid, "heat",my_rank,
    nb_procs, nb_dims )
  • call RedSYM_Grid_addSerie(grid,"temperature",
    REDSYM_DOUBLE ,1)
  • call RedSYM_Grid_setDistribution(grid,
    Distribution1D)?
  • !
  • Lower(2) Lower(2) offset upper(2) upper(2)
    offset ! offset 1
  • call RedSYM_BlockInt_create(AllocatedLocalDomain,n
    b_dims,lower,upper)?
  • call RedSYM_Grid_wrapAllocatedBlock(grid,0,0,U(0,0
    ),AllocatedLocalDomain)?

43
Exemple Fichier XML
lt?xml version"1.0" encoding"UTF-8"
?gt ltsimulationgt ltdatagt ltgrid
id"heat" label"champ des temperatures"gt
ltserie id"temperature" /gt lt/gridgt
lt/datagt

lthtm auto-start"false" gt ltdata-context
ref"heat" context"readable"/gt ltloop
id"timeLoop"gt lttask id"bodyLoop"gt
lttask id"update" /gt
lttask id"swap"gt
ltdata-context ref"heat" context"modified"/gt
lt/taskgt ltpoint
id"after_update"  /gt lt/taskgt
lt/loopgt lt/htmgt lt/simulationgt
44
Intégration de LOSS4D
45
Quelques modifications pour GRID5000 et EPSN
  • Portage pour gfortran, mpich-mx
  • Remplacement de l'extension .f90 en .F90
  • fft, comm, loss, poisson2dpp
  • Makefile.include et MakeFile
  • Développement dune visualisation simple dans
    SIMONE pour la densité
  • Projection

46
Modification make.include
  • Création de l'entrée linuxEPSN  EPSN
    GRID5000 image EPSN    gcc, g et gfortran 4.1
       EPSN_FFLAGS   -I(EPSN_TOP)/include
    -I(REDGRID_TOP)/include   EPSN_LDFLAGS
    -L(EPSN_TOP)/lib -L(REDGRID_TOP)/lib
    \
    -Wl,-rpath,(EPSN_TOP)/lib,-rpath,(REDGRID_TOP)/l
    ib   EPSN_LIBS     -lEpsnSimulation -lredsym
    -lmetis  MAKEmake  LDFLAGS   FFLAGS -O3
    -D_FFTPACK_ -D__EPSN__  F90FLAGS  -D_FFTPACK_
    -D__EPSN__ -O3 -free-form  ARFLAGS  
    FCmpif90  F90mpif90

47
Modification Makefile
  • Ajout de la variable et de la règle FFTLIB
    dfftpack/libdfftpack.a
  • .F90.o verif    (F90) (F90FLAGS) -c
    (_at_.o.F90)
  • Création d'une dépendance particulière pour
    comm.o
  • comm.o   comm.F90    (F90) (F90FLAGS) -c
    comm.F90
  • Création d'une entrée pour compiler loss4d avec
    EPSN
  • lossEPSN.o lossEPSN.F90
  • (F90) (F90FLAGS) -c lossEPSN.F90
  • lossEPSN verif fft (OBJS) comm.o lossEPSN.o
  •     (F90) (EPSN_LDFLAGS) (OBJS) (FFTLIB)
    (EPSN_LIBS) (LIBS)-o _at_ _at_.o

48
Notre approche
  • Données
  • densité décomposition bloc dans les 2 dernières
    variables
  • Grille régulière 4d objet grid de RedSYM
  • champs Ex, Ey, rho répliqués sur tous les
    processus
  • On décide de mapper une décomposition bloc pour
    récupérer les données en parallèle
  • Grille régulière 2d objet grid de RedSYM
  • MHT
  • Utiliser une plage daccès pour récupérer plutôt
    quun point.
  • Point avant la boucle en temps
  • plage calcul de E et les diagnostiques

49
Exemple Fichier XML
Description des données
Description du code

ltdatagt ltgrid id"density" label"Density
function"gt ltserie id"fn0" /gt
lt/gridgt lt/datagt
lthtm auto-start"false"gt ltdata-context
ref"density" context"protected"/gt lttask
id"initStep"/gt ltpoint id"BeforeTimeLoop"gt
ltdata-context ref"density"
context"readable"/gt lt/pointgt ltloop
id"timeLoop"gt lttask id"bodyLoop"gt
lttask id"advection"gt
ltdata-context ref"density" context"modified"/gt
lt/taskgt lttask
id"computeEandDiagnostiques"gt ltdata-context
ref"density" context"readable"/gt
lt/taskgt lt/taskgt lt/loopgt lt/htmgt
Loss4d.xml
50
Intégration dans loss4d
  • Initialisation dEPSN dans le module
    communication via la procédure
  • subroutine comm_initEPSN(dom,simulationName,xmlFi
    lename,proxyNode)?
  • type(domain), INTENT(IN) dom
  • CHARACTER(), intent(in) simulationName
  • CHARACTER(), intent(in) xmlFilename
  • integer, intent(in)
    proxyNode
  • Instrumentation des données et du MHT uniquement
    dans loss4d.F90

Comm.F90
lossEPSN.F90
51
Le modèle de données dans EPSN
  • Description symbolique des données approche
    spatiale
  • Distribution des données entre les processeurs
  • Organisation en mémoire des données sur un
    processeur
  • 3 étapes
  • Décrit le domaine global GlobalDomain
  • Bloc (0,0,0,0) (Nvx,Nvy,Nx-1,Ny-1)?
  • Nvx domproc_vxdomdom_vx-1
  • Décrit le sous domaine (bloc) que lon possède
    LocalDomain
  • Bloc (jstart,istart,0,0) (jend,iend,Nx-1,Ny-1)?
  • Décrit lagencement mémoire du bloc
  • Prise en compte des fantômes  

(X,Y)?
52
Exemple description des données
  • USE moduleEPSN
  • INTEGER(EPSN_KIND_HANDLE) GlobalDomain,
    LocalDomain, AllocatedLocalDomain
  • INTEGER(EPSN_KIND_HANDLE) LastBlock2DDistribu
    tion,blocks(1),grid
  • call RedSYM_BlockInt_create(GlobalDomain,nb_dims,l
    ower,upper)
  • call RedSYM_BlockInt_create(LocalDomain,nb_dims,lo
    wer,upper)
  • Blocks(1) LocalDomain nb_blocks 1
  • call RedSYM_DistributionInt_create(LastBlock2DDist
    ribution,GlobalDomain, nb_blocks,blocks)
  • call RedSYM_Grid_create( filed4d, "density",
    domlocal_id, domnbprocs, nb_dims)
  • call RedSYM_Grid_addSerie(filed4d,"fn0",
    REDSYM_DOUBLE ,1)
  • call RedSYM_BlockInt_create(AllocatedLocalDomain,n
    b_dims,lower,upper)?
  • call RedSYM_Grid_setDistribution(field4d,
    LastBlock2DDistribution)?
  • call RedSYM_Grid_wrapAllocatedBlock(
    field4d,0,0,fn0(lower(1),lower(2),lower(3),lower(4
    )), AllocatedLocalDomain)?

Création du domaine global
Création du domaine local
Création de la distribution
Construction des données un objet field4d, une
série fn0
Lien entre la distribution et la donnée
loss4dEPSN.F90
53
Premier résultat (1)?
  • Simulation cas test SGU40 - 32x32x64x64 16
    processeurs
  • Client SIMONE (séquentiel chromium)?

54
Premier résultat (2)?
  • Simulation cas test SGU40 - 32x32x64x64 16
    processeurs

plage trop petite pour le transfert
(sort-last)? Taille des données, paralléliser le
traitement
Write a Comment
User Comments (0)
About PowerShow.com