Title: Expos
1Exposé GT 24/10/2002
2(No Transcript)
3 solverMatrix distribuée et factorisée
solverMatrix distribuée
graphe
permutation
symbolMatrix
Scotch
Fax
Blend
Sopalin
solution distribuée
element
ddl
noeud
sequentiel
parallele
global
local
symbolique
numerique
4Fax
5Factorisation Symbolique
6Blend
7 solverMatrix distribuée et factorisée
solverMatrix distribuée
graphe
permutation
symbolMatrix
Scotch
Fax
Blend
Sopalin
solution distribuée
element
ddl
noeud
sequentiel
parallele
global
local
symbolique
numerique
8Repartitionnement et distribution des blocs
- ? Gère le parallélisme induit par le creux
(arbre délimination par blocs). - ? Découpe et distribue les blocs afin de prendre
en compte le parallélisme potentiel induit par
les calculs en plein . - ? Utilise la taille de bloc optimale pour les
routines BLAS de niveau 3.
9Arbre délimination par blocs
10Modélisation coûts calcul et comm
Nombre de processeurs
Matrice symboliquepar blocs
Repartitionnement de la matrice
Estimation du temps de calcul
Graphe de tâches
Distribution et ordonnancement
Espace Mémoire nécessaire
Schéma de communication
Données locales
Ordonnancement tâches
Factorisation et résolution //
11Modélisation coûts calcul et comm
Nombre de processeurs
Matrice symboliquepar blocs
Repartitionnement de la matrice
Graphe de tâches
Distribution et ordonnancement
Schéma de communication
Données locales
Ordonnancement tâches
Limitation mémoire
Réduction surcoût mémoire
Nouveau schéma de communication
Factorisation et résolution //
12Modélisation coûts calcul et comm
Nombre de processeurs
Matrice symboliquepar blocs
Repartitionnement de la matrice
Graphe de tâches
Distribution et ordonnancement
Limitation mémoire
Schéma de communication
Données locales
Ordonnancement tâches
Calcul dun schéma I/O pour lOOC
Factorisation et résolution // OOC
Schéma I/O disque
13Distribution mixte 1D/2D
- Le solveur gère une distribution 1D ou 2D des
blocs - 1D sur les petits supernodes -gt efficacité BLAS
- 2D sur les plus gros supernodes -gt scalabilité
- ? Critère de basculement entre les 2
distributions
1D block distribution
14Repartionnement et processeurs candidats
1 2 3 4 5 6 7 8
15Sopalin
16 solverMatrix distribuée et factorisée
solverMatrix distribuée
graphe
permutation
symbolMatrix
Scotch
Fax
Blend
Sopalin
solution distribuée
element
ddl
noeud
sequentiel
parallele
global
local
symbolique
numerique
17Lalgorithme de factorisation parallèle
- A est Symétrique Définie Positive ??
factorisation sans pivotage - Algorithme supernodal de factorisation parallèle
creuse L.Lt / L.D.Lt avec agrégation locale
complète et distribution mixte 1D/2D.
18(No Transcript)
19Modélisation coûts calcul et comm
Nombre de processeurs
Matrice symboliquepar blocs
Repartitionnement de la matrice
Graphe de tâches
Distribution et ordonnancement
Schéma de communication
Données locales
Ordonnancement tâches
Limitation mémoire
Réduction surcoût mémoire
Nouveau schéma de communication
Factorisation et résolution //
20Algorithme de la factorisation //
- FACTOR(k) factoriser le bloc diagonal k
- Factoriser Akk en LkkLtkk
- BDIV(j,k) mis-à-jour Ljk
- Résoudre LkkLjkt Atjk
- BMOD(i,j,k) calculer la contribution de Lik
pour le bloc Lij Calculer CjLikLjkt - Si map(i,j) p Alors Aij Aij Cj
- Sinon AUBijAUBij Cj
k
j
Ljk
Lik
Lij
21Algorithme de la factorisation //
- COMP1D(k) factoriser le bloc-colonne k et
calculer toutes les contributions destinées aux
blocs-colonnes de BCol(k) - Factoriser Akk en LkkLtkk
- Résoudre LkkLt Atk
- Pour j ? BCol(k) Faire
- Calculer CjLjkLjkt
- Si map(j,j) p Alors Ajj Ajj Cj
- Sinon AUBjjAUBjj Cj
22Algorithme de la factorisation //
- Pour n 1 à NTp Faire
- Selon (le type de Kpn) Faire
- COMP1D Recevoir et ajouter tous les AUBkk
dans Akk - COMP1D(k)
- Phase_Envoi()
- FACTOR Recevoir et ajouter tous les AUBkk
dans Akk - FACTOR(k)
- envoyer Lkk à tous les processeurs dans
map(k, k) - BDIV Recevoir Lkk et recevoir et ajouter les
AUBij pour Ajk - BDIV(j,k)
- envoyer Fjt à tous les processeurs dans
map(j, k) - BMOD Recevoir Ljkt
- BMOD(i,j,k)
- Phase_Envoi()
23Structure de données
typedef struct SymbolCblk_ INT
fcolnum // First column index INT
lcolnum // Last column index
(inclusive) INT bloknum //
First block in column (diag.)
SymbolCblk typedef struct SymbolBlok_ INT
frownum // First row index
INT lrownum // Last row
index (inclusive) INT
cblknum // Facing column block INT
levfval // Level-of-fill value
SymbolBlok typedef struct SymbolMatrix_ INT
baseval // Base value for
numberings INT cblknbr //
Number of column blocks INT
bloknbr // Number of blocks SymbolCblk
restrict cblktab // Array of column blocks
SymbolBlok restrict bloktab // Array of
blocks INT nodenbr //
Number of nodes in matrix SymbolMatrix
24Structure de données
typedef struct SolverMatrix_ SymbolMatrix
symbmtx SolverCblk restrict
cblktab SolverBlok restrict bloktab
INT coefnbr INT
ftgtnbr FLOAT restrict
coeftab FanInTarget restrict ftgttab
int procnum int
procnbr BlockTarget restrict
btagtab INT btagnbr
BlockCoeff restrict bcoftab INT
bcofnbr Task restrict
tasktab INT tasknbr
Ooc restrict oocstr UpDownVector
updovct SolverMatrix typedef
struct SolverCblk_ INT
stride INT procdiag
INT cblkdiag SolverCblk
typedef struct SolverBlok_ INT
coefind SolverBlok
25Structure de données
- define COMP_1D 0
- define DIAG 1
- define E1 2
- define E2 3
- define DRUNK 4
- typedef struct Task_
- INT taskid
- INT prionum
- INT cblknum
- INT bloknum
- INT ctrbcnt
- BlockTarget btagptr
- INT indnum
- INT tasknext Task
26Structure de données
- typedef enum
- FTGT_CTRBNBR 0,
- FTGT_CTRBCNT,
- FTGT_PROCDST,
- FTGT_TASKDST,
- FTGT_BLOKDST,
- FTGT_PRIONUM,
- FTGT_FCOLNUM,
- FTGT_LCOLNUM,
- FTGT_FROWNUM,
- FTGT_LROWNUM,
- MAXINFO
- FanInInfo
- typedef struct FanInTarget_
- INT infotabMAXINFO
- FLOAT coeftab
FanInTarget
27(No Transcript)
28Factorisation LU
29Stockage de la partie U
Transposition
Uk
Lkk
Ukk
Lkk
kkU
Lk
Lk
kU
30Structure de données
typedef struct SolverMatrix_ SymbolMatrix
symbmtx SolverCblk restrict
cblktab SolverBlok restrict bloktab
INT coefnbr INT
ftgtnbr FLOAT restrict
coeftab FLOAT restrict ucoeftab
FanInTarget restrict ftgttab int
procnum int
procnbr BlockTarget restrict btagtab
INT btagnbr BlockCoeff
restrict bcoftab INT
bcofnbr Task restrict tasktab
INT tasknbr Ooc
restrict oocstr UpDownVector
updovct SolverMatrix typedef struct
SolverCblk_ INT
stride INT procdiag
INT cblkdiag SolverCblk
typedef struct SolverBlok_ INT
coefind SolverBlok
31Algorithme de la factorisation //
- FACTOR(k) factoriser le bloc diagonal k
- Factoriser Akk en LkkUkk
- BDIV(j,k) mis-à-jour Ljk et Uik
- Résoudre LkkUki Aki
- Résoudre Ukk Lik Aik
- BMOD(i,j,k) calculer la contribution de Lik
pour le bloc Lij Calculer CjLikUkj - Calculer DjLjkUki
- Si map(i,j) p Alors Aij Aij Cj
- Aji
Aji Dj - Sinon AUBijAUBij Cj
- AUBjiAUBji Dj
Ukj
k
j
Ljk
Lik
Lij
32Algorithme de la factorisation //
- COMP1D(k) factoriser le bloc-colonne k et
calculer toutes les contributions destinées aux
blocs-colonnes de BCol(k) - Factoriser Akk en LkkUkk
- Résoudre LkkUk Ak
- Résoudre LkUkk Ak
- Pour j ? BCol(k) Faire
- Calculer CjLjkUkj
- Calculer DjLjkUkj
- Si map(j,j) p Alors Ajj Ajj Cj
AjjAjj-Dj - Sinon AUBjjAUBjj Cj AUBjjAUBjj
Dj
33- Pour n 1 à NTp Faire
- Selon (le type de Kpn) Faire
- COMP1D Recevoir et ajouter tous les AUBkk
dans Akk Recevoir et ajouter tous les AUBkk
dans Akk - COMP1D(k)
- Phase_Envoi()
- FACTOR Recevoir et ajouter tous les AUBkk
dans Akk - FACTOR(k)
- envoyer Lkk et Ukk à tous les processeurs dans
map(k, k) - BDIV Recevoir Lkk et Ukk et recevoir et
ajouter les AUBij pour Ajk et Aki - BDIV(j,k)
- envoyer Fjt à tous les processeurs dans
map(j, k) - BMOD Recevoir Uki et Lik
- BMOD(i,j,k)
- Phase_Envoi()
34Pivotage Statique
Factorisation ALU avec contrôle de lamplitude
de la diagonale
Si (aii) lt
Alors aii
Resoudre LUx b
Iterer
35Perspectives
- Interface externe
- Portabilité