HAL Id: hal-01430032
https://hal.inria.fr/hal-01430032
Submitted on 9 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
Faisabilité d’un compilateur de langage data-parallèle
traitant les matrices creuses
Eddy Caron
To cite this version:
Eddy Caron. Faisabilité d’un compilateur de langage data-parallèle traitant les matrices creuses. Calcul parallèle, distribué et partagé [cs.DC]. 1996. �hal-01430032�
FD : Flot de donnees FI : Flot d’instructions I/O : Entree/Sortie Unite de Controle FI FI FD Processeur Memoire I/O Lecture de l’instruction Décodage de l’instruction
Lecture des opérandes Exécution de l’instruction
Rangement du résultat Pour chaque Instruction
Instruction 1 Instruction 2 Instruction 3 Instruction 1 Instruction 2 Instruction 3 Instruction 4 Instruction 5 Instruction 6 Instruction 7 S éq u en t i el p i p e-l i n e Cycl es m a ch i n es
Unite de Controle 1 Unite de Controle 2
FD : Flot de donnees FI : Flot d’instructions I/O : Entree/Sortie Unite de Controle N
Processeur 1 Processeur 2 Processeur N
I/O
...
...
...
FI FI FI FI FI FI FD FD FD FD Memoire (programme et donnees)Unite de Controle FD : Flot de donnees FI : Flot d’instructions I/O : Entree/Sortie Processeur 2 Memoire 2 Memoire N FI FI FD FD Reseau d’interconnexions Processeur 1 Processeur N FD FD FD FD
P P P P P
M M M M M
Memoire N Memoire 1 Unite de Controle N Memoire 1 FD : Flot de donnees FI : Flot d’instructions I/O : Entree/Sortie
Processeur 1 Processeur 2 Processeur N
Unite de Controle 1 Unite de Controle 2
FD FD
FD
FD FD FD
FI FI FI
P P P P Unités de calcul
P P P P
M M M M
Unités de calcul
Réseau en anneau
I Réseau en Tores
Réseau en Grilles Réseau en Hyper-cubes
III IV
1 2 3 4 5 T r a i t em en t S eq u en t i el T r a i t em en t D a t a P a r a l l el e Pour i allant de 1 a 5 finpour A[i]:=A[i]+B[i] A:=A+B B A 5 4 1 8 7
4 1 2 9 9 2 2 1 1 2 3 1 9 9 2 1 3 5 9 9 1 2 2 4 1 7 3 1 4 9 3 5 6 3 9 8 5 1 4 5 9 8 7 6 8 8 8 7 9 7 7 2 1 7 2 1 3 4 3 5 6 7 3 1 9 9 1 1 9 1 9 7 1 7 2 1 3 4 3 5 6 7 3 1 9 9 1 1 9 1 9 7 6 3 9 8 5 1 4 5 9 8 7 6 8 8 8 7 9 7 7 2 3 5 9 9 1 2 2 4 1 7 3 1 4 9 3 5 4 1 2 9 9 2 2 1 1 2 3 1 9 9 2 1 Processeur 4 Processeur 3 Processeur 2 Processeur 1
1 2 3 4 5 T r a i t em en t S eq u en t i el T r a i t em en t D a t a P a r a l l el e 4 4 2 6 4 12 6 6 12 i=1 i=2 i=3 i=4 i=5 2 3 4 5 3 4 5 4 5 5 1 processeur A B Pour i allant de 1 a 5 finpour A[i]:=A[i]+B[i] 5 4 1 8 7 6 6 6 6 6 4 6 6 4 6 6 4 1212 12 Etape 1 Etape 2 3 processeurs A:=A+B
hspace matrice [x=100,y=100] int matrice [x=10;20,y=10;20]
dpo Mdpo
C* int:colmat matrice;
Shape [900] colvect; Shape [1152, 900] colmat;
T
!HPF$ TEMPLATE T(6,4)
REAL, DIMENSION (6,4) :: A REAL, DIMENSION (6) :: B !HPF$ ALIGN A WITH T
!HPF$ ALIGN B(I) WITH T(I,2)
B A
plan Mat1
Mat2
hspace plan [x=100,y=100];
dpo int plan [x=10;80,y=10;80] Mat1 dpo int plan [x=30;50,y=20;60] Mat2
30 50 10 80 100 10 20 50 60 80 100 20 40 10 50
9 5 9 8 7 9 1 8 8
9 8 1 4 5 9 8 7 6 7 9 7 9 2 8
5 8 8 1 7 4 7 9 9 2 6 9
1 1 1 1 1 1 1 1 1 1 0 0 F F F F F L L L L L Compression des lignes
Al context Al first Al last Compression des colonnes
1 1 2 1 2 1 2 1 3 3 1 2 5 5 2 6 1 1 2 Colonnes -> Lignes 4 1 3 7 -2 6 9 4 10 -9 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 3 7 -2 4 9 10 8 -9 6 Lignes -> Colonnes 1 2 1 2 1 2 1 1 1 2 Al_l Al_c 1 3 4 3 1 4 2 6 2 5 1 1 1 1 1 1 1 1 1 1 0 F F F F L L L 4 9 10 3 7 6 -2 -9 8 1 0 F L L Al v
-150 -100 -50 0 50 100 0.001 0.01 0.1 1 10 100 Gain en % % d’elements significatifs
Gain moyen d’occupation memoire pour une matrice 1000*1000 COO CSR ou CSC DIA ELL JAD SKY S3
1 3 2 3 1 1 3 5 6 0 0 0 0 0 0 0 0 51 0 0 11 12 21 22 0 0 0 15 16 25 26 0 0 0 33 43 0 44 35 36 45 46 52 61 62 11 21 12 22 15 25 16 26 33 43 0 44 35 45 36 46 51 61 52 62
A
CA
LA
"
"
"
1
4
8
2
7
5
3
6
1
2
2
53 19 17 93 DA0 2 1 4 5 CO RO 1 2 2 3 3 4 5 5 0 0 P(0,0) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 19 53 17 0 93 0 0 0 0 0 27 23 69 11 13 21 0 72 16 0 44 37 64 19 DA CO RO 1 1 5 P(1,1) DA 2 CO RO 1 P(1,0) 23 69 27 11 3 1 4 1 3 5 2 2 2 3 3 3 44 19 37 64 1 4 3 3 4 DA 2 CO RO 1 2 3 4 5 P(0,1) 21 16 72 13 3 1 2 1 4 4 1 1 1
Donnees creuses Algorithme Donnees denses Langages usuel Adaptation Compression Compilation Machine Donnees creuses Compilation Algorithme Machine Compression
Pré-compression II Post-Compression I
3 4 5 1 6 3 9 1 7 2 2 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 9
1 0 0 0 0 0 0 4 1 3 0 3 9 0 0 3 P 1 P 2 7 2 1 0 2 4 2 0 8 3 0 0 0 0 0 0 1 1 2 2 5 3 2 0 3 6 A J A J P 3 A J A J J A J A P 4 P 5 P 6 Pour j allant de 4 à 4 Pour i allant de 3 à 3 Parcours sur le processeur 1 Pour i allant de 3 à 3 Parcours sur le processeur 3 Pour j allant de 1 à 4 Parcours sur le processeur 4 Pour i allant de 1 à 2 Pour j allant de 1 à 4 Pour j allant de 4 à 4 Parcours sur le processeur 2 Pour i allant de 1 à 2 Parcours du domaine d’activité Pour i allant de 3 à 5 faire
4 1 8 7 9 6 8 7 51 52 9 53 6 4 1 8 7 51 52 9 53 6
A
N
A
4 1 8 7 9 6 4 1 8 7 51 52 9 53 6A
4 1 8 7 9 6 51 52 53A
A
4 1 8 7 9 6 A
4 1 8 51 52 7 9 53 6 A
4 1 8 " 7 9 " 6 A