HAL Id: tel-01444591
https://tel.archives-ouvertes.fr/tel-01444591
Submitted on 24 Jan 2017
HAL is a multi-disciplinary open access archive for the deposit and dissemination of sci-entific research documents, whether they are pub-lished or not. The documents may come from teaching and research institutions in France or abroad, or from public or private research centers.
L’archive ouverte pluridisciplinaire HAL, est destinée au dépôt et à la diffusion de documents scientifiques de niveau recherche, publiés ou non, émanant des établissements d’enseignement et de recherche français ou étrangers, des laboratoires publics ou privés.
Distributed under a Creative Commons Attribution - NonCommercial - NoDerivatives| 4.0 International License
Calcul numérique sur données de grande taille
Eddy Caron
To cite this version:
Eddy Caron. Calcul numérique sur données de grande taille. Calcul parallèle, distribué et partagé [cs.DC]. Université de Picardie Jules Verne, 2000. Français. �tel-01444591�
`
`
`
Registres Cache L1 Mémoire vive Cache L2 Disques Temps d’accès Capacité de stockage
`
`
`
Table des pages d’un processus Mémoire virtuelle Mémoire physique NP1 NP2 NP3 NP4 NP5 NPV3 NPV1 NPV4 NPV5 NPV2 NPV0 NP0
i
p=0 p=1 p=2 p=3 j
i
j p=0
p=1 p=2 p=3
i=M j=1 i=2 i=3 i=1 i=M+1=N j=2 i=M-1 M N N p M i j
p1 p
2 p3
pn-1
Données utilisées pour le calcul de Ai,j
Pages chargées entre l’accès à A et l’accès à Ai,j i,j-1
Ai,j i,j+1A p p0 p1 p 2 pi-1 Ai,j i+1,j A p p i i+1 i,j i,j
Pages chargées entre le calcul de A et le calcul de Ai+1,j Données utilisées pour le calcul de A et de Ai+1,j
`
`
`
`
p=0 i
A2 B2 B1 A1 B0 A0 k=0 k=1 k=2 k=3
Basic Linear Algebra Communication Subprograms Linear Algebra PACKage
Bibliothèque de communication Parallel Basic Linear Algebra Subprograms Scalable Linear Algebra PACKage
Basic Linear Algebra Subprograms
Librairies séquentielles Librairies parallèles
BLACS
LAPACK
PVM/MPI/...
ScaLAPACK
BLAS
PBLAS
`` `
a a
a a
a
a
a
a
a
a
a
a
a a
a a
a
a
a
a
a
a
a
a
a a
a a
a
a
a
a
a
a
a
a
a a
a a
a
a
a
a
a
a
a
a
a
a
a
a
33 34 43 44a
a
a
a
37 38 47 48a a
a a
17 18 27 28a a
a a
13 14 23 24a
a
a
a
53 54 63 64a
a
a
a
57 58 67 68a a
a a
15 16 25 26 52 51 61 62a
a
a
a
55 56 65 66a
a
a
a
11 12 21 22a a
a a
a
a
a
a
31 32 41 42a
a
a
a
35 36 45 46 11 12 13 14 15 16 17 18 21 22 23 24 25 26 27 28 31 32 33 34 35 36 37 38 41 42 43 44 45 51 52 53 54 55 56 57 58 61 62 63 46 47 48 64 65 66 67 68Matrice 6x8 décomposée en blocs de taille 2x2
Décomposition ScaLAPACK Niveau in-core élément bloc matrice Hiérarchie mémoire registre élément cache mémoire disque bloc super-bloc matrice Décomposition ScaLAPACK Niveau out-of-core ` ` ` ` `
MMB/4 Matrice globale Super-bloc N/4 MMB/4 MMB/4 N/4 N/4 MMB/4 MMB/4 N/4 M N Matrice locale M/4 N/4 M/4 N/4 M/4 N/4 M/4 N/4
pas encore été accédés Super-blocs déjà calculés Super-bloc actif Super-blocs n’ayant
k K N k B=K/k=6 S=N/K=4 L=N/k=24 Taille de bloc Taille du superbloc Ordre de la matrice pdgetf2 pdtrsm pdgemm
=
L
x
Xb
X=
=
x
Xb
X=
U
*
=
00 10 11 01 I I I I L00 L L10 11 0 00 01 11 X X X10 XL00 X00x =I00 I10 L10X00 10 = I’ 10 = X’ X’11=I’11=I11-L10X01 Données utilisées
Données résultats Zone de travail (l’algorithme s’applique récursivement sur les zones de travail ainsi déterminées)
=
=
=
=
*
*
*
xX =I L00 01 01 -L00 X00 I00 L00 X01 I 01 L10 00 X L10 X01 11 I’ 11 X’ 10 I’ 10 X’X1i X2i L1j L2j Ii1 Ii2 Ii2 L2jX1i X2i= - pdgemm L1j X1i =Ii1 pdtrsm
=
x
recouvrement Avec recouvrementSans recouvrementAvec recouvrementSans t=4 t=5 t=6 t=1 t=2 t=3 Lecture disque Calcul Super-bloc actif
Calcul
Interruption pour les E/S Lecture disque
Version Asynchrone Version Synchrone
Nouvelle primitive Scilab
addinter intersci link
Interface
programme en C
mex
Fonction externe
Type : langage C
` `+ OOC-lib BLACS Scilab-relais Scilab-relais Noeud 0 ScaLAPACK + OOC-lib + OOC-lib ScaLAPACK Noeud 1 Noeud 2 ScaLAPACK + OOC-lib Noeud 3 ScaLAPACK Scilab-relais Scilab-relais Scilab-// +OOC
matrices scilab Out-Of-Core
Creuses-OOC Creuses distribuées
Distribuées
0 1 2 3 7 6 5 4 1 0 0 1 2 3 0 1 2 3 7 1 0 0 1 2 3 4 6 5 Column major Row major