Chapitre 3
Chapitre 3
Chapitre 3
Chapitre 3
Fondements de la Programmation
Fondements de la Programmation
Fondements de la Programmation
Fondements de la Programmation
Parall lelelele
Parall
Parall
Parall
Plan du cours
Plan du cours
Plan du cours
Plan du cours
1. Introduction
1. Introduction
1. Introduction
1. Introduction
2. Mod les, Environnements et Paradigmes de Programmation
2. Mod
les, Environnements et Paradigmes de Programmation
les, Environnements et Paradigmes de Programmation
les, Environnements et Paradigmes de Programmation
2. Mod
2. Mod
lisme
des performances du parall lisme
Evaluation des performances du parall
3. 3. 3. 3. Evaluation
lisme
lisme
des performances du parall
des performances du parall
Evaluation
Evaluation
parall lesleslesles
scientifiques parall
ques scientifiques
Biblioth ques
4. 4. 4. 4. Biblioth
parall
parall
scientifiques
scientifiques
quesques
Biblioth
Biblioth
1. Introduction
1. Introduction
1. Introduction
1. Introduction
(cid:1) Dans la d cennie pr c dente, le monde a v cu une des plus excitantes
p riodes dans le d veloppement des ordinateurs : les am liorations des
performances des ordinateurs ont t spectaculaires.
(cid:1) De nouveaux paradigmes de programmation, langages, techniques
dordonnancement et de partitionnement, et algorithmes sont
n cessaires pour exploiter efficacement la puissance de ces machines
sophistiqu es et pour gagner de
la puissance soit au niveau
algorithmique, soit au niveau architectural.
2
2. Mod
les, Environnements et Paradigmes de
2. Mod les, Environnements et Paradigmes de
les, Environnements et Paradigmes de
les, Environnements et Paradigmes de
2. Mod
2. Mod
Programmation
Programmation
Programmation
Programmation
2.1. Principales formes de parall lisme
Il existe fondamentalement deux approches pour la programmation
parall le : implicite et explicite.
Approche implicite
(cid:1)
(cid:1)
(cid:1)
Cette approche se traduit par les langages parall les et les compilateurs
parall liseurs.
Prendre un langage existant et laisser le compilateur faire tout le travail.
Approche id ale du point de vue de lutilisateur :
" Codes existants peuvent tourner sans rien changer ni optimiser.
" Economie dans les co ts de d veloppement.
3
Probl mes de cette approche :
"
"
Le plein potentiel parall le dun probl me ne peut pas toujours tre
exploit .
Pour l criture dun nouveau programme, il est conseill que le
programmeur ait une certaine connaissance sur les possibilit s de
d tection du parall lisme du compilateur afin d crire du code qui
sex cute rapidement.
=> d viation du but original de d tection automatique du parall lisme.
4
Approche explicite
(cid:1)
Cette approche est justifi e par le fait que lutilisateur est souvent le
meilleur juge de la fa on avec laquelle le parall lisme peut tre exploit
efficacement pour une application particuli re.
Avantages :
"
"
Les utilisateurs sont d j habitu s aux langages de base.
Pour que leurs programmes sex cutent efficacement, seulement un
ensemble limit de fonctions suppl mentaires a besoin d tre
appliqu .
5
Probl mes :
"
Le programmeur est responsable dune grande partie de leffort de
parall lisation.
" Manque de portabilit : ces langages sont destin s des classes
sp cifiques de machines.
" Manque de standardisation
d velopp es avec des
apparences diff rentes
: beaucoup dextensions ont t
fonctionnalit s similaires mais des
6
2.2. Les sources du parall lisme
(cid:1)
Exploiter toute la puissance de calcul dune machine parall le est
souvent difficile :
"
Les algorithmes et les applications ne poss dent pas tous le m me
parall lisme potentiel.
" Mettre en vidence le potentiel de parall lisme dun algorithme et
lexploiter au mieux des capacit s de la machine reste un probl me
difficile.
7
"
Probl me du choix de lalgorithme pour r soudre un probl me
donn :
"
"
Plusieurs algorithmes s quentiels possibles.
Le parall lisme extrait du meilleur algorithme s quentiel
naboutit pas forc ment au meilleur algorithme parall le.
" Chaque algorithme se pr te plus ou moins une
parall lisation.
(cid:1)
On identifie trois sources de parall lisme : parall lisme de donn es,
parall lisme de t ches (ou de contr le) et parall lisme de flux.
8
Parall lisme de donn es
(cid:1) Exploite comme source de parall lisme la r gularit des donn es
(cid:1) Applique en parall le un m me calcul des donn es diff rentes
Parall lisme de t ches
(cid:1) Consiste appliquer des calculs diff rents sur des donn es diff rentes
en m me temps afin de g n rer du parall lisme
Parall lisme de flux
(cid:1) Correspond la technique du travail la cha ne
(cid:1) Chaque donn e subit une s quence de traitement r alis e en mode
pipeline en exploitant une r gularit des donn es
Remarque :
Lorsquon combine plus quun mode, on parle de parall lisme mixte.
9
2.3. Grain (ou granularit ) et degr de parall lisme
(cid:1)
Ces deux param tres sont importants tudier lorsquon parall lise une
la
application.
parall lisation.
Ils ont une grande
lefficacit de
Publicité
influence sur
Grain de parall lisme
(cid:1)
(cid:1)
(cid:1)
Taille moyenne des t ches l mentaires qui ont guid la parall lisation
(en nombre dinstructions, temps dex cution, &).
Le choix du grain de parall lisme est fortement li larchitecture sous-
jacente.
Ce param tre a g n ralement une grande influence sur le param tre du
degr de parall lisme.
10
Niveau de parall lisation Mode
Programmes
Gros grain
Sous-Programmes
Instructions
Grain fin
Expressions
Op rateurs
MIMD
SIMD
11
Degr de parall lisme
(cid:1)
(cid:1)
(cid:1)
Cest la mesure du nombre de sous-t ches ex cut es simultan ment
dans un programme parall le.
=> indication du nombre de processeurs que lon pourra utiliser.
Il peut fortement varier dans les diff rentes parties du programme
=> on consid re souvent le degr maximal, moyen et minimal
Ces degr s peuvent tre valu s statiquement la compilation, ou
dynamiquement lors de lex cution.
Remarque :
(cid:1)
Bien que lex cution dun programme avec un nombre de processeurs
gal au degr maximal de parall lisme soit, en principe, la plus rapide,
cela ne signifie pas
le nombre optimal de
forc ment que cest
processeurs!
12
2.4. Mod les dabstraction
(cid:1)
L tude de mod les th oriques pour le calcul parall le est de donner
des cadres de travail permettant de d crire et danalyser des
algorithmes.
(cid:1) Ces mod les id als sont utilis s pour d terminer des bornes de
performances et des estimations de complexit .
(cid:1) Pas de mod le unique.
(cid:1) Diff rents aspects consid rer :
"
"
"
Architecture
Logiciel
Algorithmes
(cid:1) De nombreux mod les dabstraction existent pour des architectures
parall les m moire partag e et m moire distribu e.
13
Le mod le PRAM
Caract ristiques
(cid:1)
PRAM (Parallel Random Access Machine) est un mod le de machine
utilis pour mod liser des machines parall les id alis es.
(cid:1) Machine constitu e dune infinit de processeurs qui ex cutent tous le
m me calcul en mode synchrone.
(cid:1)
(cid:1)
Tous les processeurs partagent la m me m moire globale.
Prend en compte lacc s concurrent aux donn es.
(cid:1) M me co t pour toutes les instructions (lecture, criture, traitement, &).
14
Avantages
(cid:1)
Simplicit
Probl mes
(cid:1)
Difficilement portable sur machines m moire distribu e.
(cid:1) Mod le de co t peu r aliste (dur e dun acc s = dur e dun calcul).
(cid:1)
Les surco ts dus aux communications et aux synchronisations sont
n glig s.
15
Variations sur les PRAM
(cid:1)
(cid:1)
Lacc s la m moire commune peut seffectuer de diverses mani res.
4 variantes sont possibles selon quun seul processeur ou plusieurs
peuvent lire ou crire dans la m me case m moire :
"
Lecture Exclusive (Exclusive Read, ER) : un seul processeur peut lire
dans une case m moire un instant donn .
Lecture Concurrente (Concurrent Read, CR) : plusieurs processeurs
peuvent lire simultan ment le contenu de la m me case m moire.
Ecriture Exclusive (Exclusive Write, EW) : un seul processeur peut
crire dans une case m moire un instant donn .
Ecriture Concurrente (Concurrent Write, CW) : plusieurs processeurs
peuvent crire simultan ment dans la m me case m moire => Dans
ce cas, les procs peuvent poss der des informations diff rentes, ce qui
entra ne un conflit entre eux!
"
"
"
16
(cid:1)
(cid:1)
Plusieurs mod les ont t propos s pour r soudre ce probl me :
" Mod le commun : toutes les critures concurrentes enregistrent la
m me valeur.
" Mod le arbitraire : une seule valeur choisie arbitrairement est
enregistr e.
" Mod le prioritaire.
" Max, (min) : la valeur crite par le processeur ayant lindex le plus
grand (petit) est enregistr e. Les autres valeurs sont ignor es.
etc.
"
CREW et CRCW sont les variantes les plus importantes
17
Le mod le par passage de messages
(cid:1)
(cid:1)
(cid:1)
(cid:1)
(cid:1)
(cid:1)
Un algorithme con u pour un syst me passage de message consiste
en une collection de programmes locaux sex cutant sur les diff rentes
unit s de calcul dans un syst me distribu .
Le passage de message dans un syst me distribu peut tre mod lis en
utilisant un graphe de communication.
Le graphe de communication peut tre direct
unidirectionnelles) ou non direct (communications bidirectionnelles).
Le syst me peut op rer en mode synchrone ou asynchrone.
La communication et la synchronisation sont explicites.
Exemples de librairies de passage de messages :
" MPI (Message Passing Interface)
PVM (Parallel Virtual Machine)
"
(communications
18
2.5. Paradigmes de programmation parall le
(cid:1)
(cid:1)
(cid:1)
(cid:1)
La conception des applications parall les se base sur ladoption de
paradigmes de programmation bien d finis.
Le choix du paradigme ad quat est d termin par les ressources de
calcul parall les disponibles et par le type du parall lisme inh rent dans
le probl me.
Quelques paradigmes reconnus.
Un programme = combinaison de plusieurs paradigmes.
19
Le paradigme Parall lisme de phases
: de multiples processus r alisent chacun un calcul
(cid:1)
(cid:1)
Programme = suite d tapes
tape = 2 phases : calcul + interaction
"
Calcul
ind pendant
Interaction entre les processus :
"
"
Inconv nients :
synchronisation
communication bloquante, etc.
Publicité
"
"
"
Pas de recouvrement entre linteraction et le calcul.
N cessit et difficult de maintenir l quilibrage de charge entre les
processus.
20
Le paradigme Diviser pour Parall liser
(cid:1)
(cid:1)
(cid:1)
(cid:1)
D couverte dynamique dun arbre de calculs.
Un processus parent divise le travail entre ses fils.
Les processus fils combinent leurs r sultats vers leur p re.
Division et regroupement r cursifs.
21
Sch ma algorithmique :
(cid:1)
(cid:1)
(cid:1)
R duction du probl me des
instances
plus
petites.
ind pendantes
R solution parall le r cursive des
appliquant
sous-instances,
r cursivement la m me technique
chacune des sous-instances.
en
Construction de
la solution du
probl me initial partir des solutions
de chacune des sous-instances.
22
Le paradigme Ma tre/esclaves
(cid:1)
Un processus ma tre = coordinateur
ex cute le code s quentiel
"
initie des processus esclaves
"
transmet du travail ces processus
"
esclaves
attend les r sultats des esclaves
it ration de lassignation de travail
"
"
Paradigme simple
(cid:1)
(cid:1) Ma tre = goulot d tranglement
(cid:1)
Paradigme non-extensible
(cid:1) Des processus esclaves
" attendent du travail du ma tre
" ex cutent le travail
"
retournent le r sultat au ma tre
23
des performances du //smesmesmesme
Evaluation des performances du //
3. 3. 3. 3. Evaluation
des performances du //
des performances du //
Evaluation
Evaluation
(cid:1)
(cid:1)
L tude th orique des performances des algorithmes parall les permet
de conna tre par exemple
"
"
"
lefficacit dun programme,
le gain issu du parall lisme,
son comportement futur dans le cas de laugmentation du nombre de
processeurs,
etc.
"
Il existe de nombreuses m triques de performances. Les plus utilis es
sont les suivantes:
24
3.1. Terminologie
(cid:1)
(cid:1)
Soit r soudre une instance dun probl me de taille n
On note par :
"
"
T1(n) le temps dex cution s quentiel sur un seul processeur
Tp(n) le temps dex cution parall le sur p processeurs
25
3.2. Acc l ration
On d finit le facteur dacc l ration, qui permet de mesurer le gain en temps d la
parall lisation (ou le taux dutilisation des processeurs), par le rapport :
Sp(n) = T1(n) / Tp(n) => 1<Sp(n)dp : normal . Plus Sp est proche de p,
Sp(n)<1 : on ralentit ! (mauvaise parall lisation)
Sp(n)>p : acc l ration super-lin aire : analyser et
meilleur est lalgorithme parall le.
Sp(n)
Acc l ration super-
lin aire
justifier
Sp(n)=p
Acc l ration
id ale
Acc l ration
normale
1
ralentissement
p
26
Super-lin aire :
Ce nest pas magique, et ce nest pas normal
on doit analyser le ph nom ne et lexpliquer
corriger une erreur ou exploiter une optimisation
Exemples dexplications :
(cid:1) On ne fait plus les bonnes op rations (r sultat faux)
(cid:1)
lalgorithme s quentiel nest pas le m me que lalgorithme utilis pour
la parall lisation, et quil est moins efficace.
Les donn es tiennent dans le cache total des p processeurs
(cid:1)
(cid:1) On a modifi lalgorithme de d part et on converge plus vite (exp de
lalgorithme g n tique optimis )
(cid:1) On cherche une solution dans un arbre et on stoppe le programme
27
3.3. Efficacit
(cid:1)
(cid:1)
(cid:1)
On d finit lefficacit , qui est quivalent un rendement, dun algorithme
parall le par le rapport :
Ep(n) = Sp(n) / p
=> 0 (=0%)< Ep(n) <= 1 (=100%)
Ep(n)>1 (cid:2)(cid:2)(cid:2)(cid:2) acc l ration super-lin aire
Elle permet de mesurer le taux moyen dutilisation des processeurs.
Plus lefficacit est proche de 1, plus lalgorithme a de bonnes qualit s
parall les.
28
Exemple (Multiplication de matrices)
Algorithme A
Temps en s quentiel = 10 mns
Nb procs = 10
Temps en // = 2 mns
Acc l ration = 10/2 = 5 (lapplication
va 5 fois plus vite)
Efficacit = 5/10 = 0.5
Algorithme B
Temps en s quentiel = 10 mns
Nb procs = 3
Temps en // = 4 mns
Acc l ration = 10/4 = 2.5 < 5
Efficacit = (5/2)/3 = 0.8 > 0.5
29
Remarque
(cid:1)
(cid:1)
(cid:1)
Lutilisateur sint resse surtout lacc l ration obtenue.
Lacheteur de la machine sint resse beaucoup lefficacit .
Le d veloppeur sint resse aux deux.
30
Choix de la r f rence s quentielle :
A quels programme et ex cution s quentielle se comparer ?
(cid:1) M me programme lanc sur un seul processeur ?
(cid:1) M me algorithme implant en s quentiel ?
Publicité
(cid:1) Meilleur algorithme s quentiel connu ?
(cid:1)
(cid:1)
(cid:1)
(cid:1)
(cid:1)
(cid:1)
Compilation s quentielle avec le m me compilateur ?
Compilation avec le meilleur compilateur s quentiel ?
Optimisations s quentielles autoris es par la parall lisation ?
Optimisations s quentielles maximales ?
Ex cution sur un seul processeur de la machine parall le ?
Ex cution sur la meilleure machine s quentielle ?
31
Tous les choix sont plausibles :
(cid:1)
Chaque choix de r f rence s quentielle correspond :
"
"
"
Un point de vue diff rent,
Une pr occupation diff rente,
Un objectif danalyse diff rent
Limportant est de faire le choix correspondant sa probl matique
Exemple de choix :
(cid:1)
(cid:1)
Utilisateur final : SON programme s quentiel sur SA machine s quentielle
: m me algorithme sur un processeur de la machine
Parall liseur
parall le
32
3.4. Sources de perte de performances
(cid:1) Sous-optimisation s quentielle
Aspects s quentiels
(cid:1) Fraction s quentielle
(cid:1) Surco t des op rations de gestion du parall lisme
(cid:1) Surco t d aux communications
(cid:1) D s quilibre de charge
(cid:1) ES s quentielles/s quentialis es
(cid:1) Sous-optimisation des outils et langages parall les
Algorithmique et
programmation
parall le
Environnement de
d veloppement
33
Remarque
(cid:1)
(cid:1)
Lapproche pr c dente est raisonnable pour les machines parall les
m moire partag e. Cependant, sur des machines parall les
m moire distribu e, elle est insuffisante.
Une autre d finition du facteur dacc l ration a t propos e par
Gustafson qui est bas e sur la loi dAmdahl.
34
3.5. Scalabilit des architectures parall les
(cid:1)
(cid:1)
(cid:1)
Une architecture // est dite scalable si elle peut tre tendue (resp.
r duite) un syst me plus large (resp. petit) avec une augmentation
(diminution) lin aire en sa performance (co t).
La scalabilit est utilis e comme une mesure de la capacit du syst me
fournir des performances augment es
taille est
augment e, par exemple.
lorsque sa
Autrement dit, la scalabilit est une r flexion de la capacit du syst me
utiliser efficacement laugmentation des ressources de calcul.
35
(cid:1)
(cid:1)
En pratique, la scalabilit dun syst me peut tre exprim e en
diff rentes formes, incluant la vitesse, lefficacit , la taille , les
applications, la g n ration et lh t rog n it .
Dans un syst me fortement (resp. faiblement) scalable, la taille du
probl me
(resp.
exponentiellement) en fonction de p pour maintenir une efficacit fixe.
lin airement
augmente
n cessite
quelle
36
ques Scientifiques Parall lesleslesles
4. Biblioth ques Scientifiques Parall
4. Biblioth
ques Scientifiques Parall
ques Scientifiques Parall
4. Biblioth
4. Biblioth
4.1. Motivation
(cid:1)
Calcul scientifique calcul num rique
"
"
"
"
"
Alg bre lin aire dense ou creuse
R solution lin aire directe ou it rative
R solution non-lin aire
Calcul de valeurs et de vecteurs propres
Transform es de Fourier rapides &
(cid:1)
(cid:1)
R duction du temps de d veloppement
Ind pendance vis- -vis de limplantation
"
"
S quentielle, ou
Parall le
37
4.2. Portabilit et efficacit
(cid:1) G n ricit (ind pendance vis- -vis du type des donn es)
(cid:1)
Ind pendance vis- -vis de la repr sentation des donn es
(cid:1)
(cid:1)
Choix du meilleur algorithme num rique
Assurance de la stabilit num rique
(cid:1) Optimisation fonction de larchitecture de la machine
(cid:1) Optimisation fonction des param tres (nombre de colonnes/lignes)
38
4.3. Biblioth ques monoprocesseurs (s quentielles)
BLAS (Basic Linear Algebra Subroutines)
Elle est divis e en trois sections:
(cid:1)
(cid:1)
(cid:1)
BLAS 1 : vecteur/vecteur
BLAS 2 : matrice/vecteur
BLAS 3 : matrice/matrice
BLAS niveau 1 :
Premi re biblioth que de calcul scientifique
(cid:1)
(cid:1) Op rations de type z= x+y ( scalaire, x, y et z vecteurs)
(cid:1)
(cid:1) Grand succ s
(cid:1) O(n) op rations sur O(n) l ments
Traitement l ment par l ment des l ments des vecteurs
39
BLAS niveau 2 :
(cid:1) Motiv s par :
" Diminution du nombre dacc s m moire
"
"
Augmentation du grain de calcul
Prise en compte des unit s vectorielles pipelines
(cid:1) Op ration entre matrices et vecteurs
" Op rations de type z= y+ Ax (A matrice)
" O(n2) op rations sur O(n2) l ments
40
BLAS niveau 3 :
(cid:1) Motiv s par :
" Utilisation maximale des hi rarchies m moire
" Minimisation des mouvements de donn es entre les m moires
" Meilleure utilisation des caches
(cid:1) Op ration entre matrices et matrice
" Op rations de type C= C+ AB (A, B, C matrices)
" O(n3) op rations sur O(n2) l ments
41
LAPACK (Linear Algebra PACKage) :
(cid:1)
(cid:1)
(cid:1)
(cid:1)
(cid:1)
R solution de syst mes lin aires
Publicité
R solution des moindres carr s
Valeurs propres, valeurs singuli res
Factorisation de matrices LU, Cholesky, QR, &
Alg bre lin aire de haut niveau
"
"
"
"
Travail sur des matrices denses ou des matrices bandes : pas de prise
en compte de matrices creuses g n rales
Con ue pour
parall les m moire partag e.
Utilise des algorithmes par blocs pour utiliser au mieux la hi rarchie
m moire.
Implant e au dessus des BLAS 3.
les machines vectorielles. Etendue aux machines
42
4.4. Biblioth ques parall les
(cid:1)
(cid:1)
(cid:1)
(cid:1)
(cid:1)
Equilibrage de la charge de calcul
Recouvrement des acc s aux donn es distantes par des calculs
N cessit de versions parall les des biblioth ques de calcul num rique
Prise en compte de la localit des donn es
Bonne r partition des donn es
"
"
Versions parall les des algorithmes
"
Proposer une biblioth que parall le
"
"
"
Parall liser chacune des fonctions de la biblioth que
Quel algorithme parall le ?
Quelle r partition des donn es ?
Jusqu de nouvelles m thodes num riques
(cid:1) Mod le de programmation SPMD dutilisation des biblioth ques
43
BLACS (Basic Linear Algebra Communication Subroutines)
(cid:1)
(cid:1)
(cid:1)
Bibilioth que de communications
Communications sp cialis es
"
"
"
"
change de vecteurs/matrices
Lignes/colonnes de matrices : blocs de matrices
Diffusion et r duction
Contexte de la communication : isoler les communications de la
biblioth que et dautres communications.
BLACS :
"
"
"
Portabilit (versions PVM et MPI)
Efficacit (versions optimis es pour nombres de machines)
Ce nest pas une biblioth que g n rale de communications
44
PBLAS (Parallel BLAS)
(cid:1)
(cid:1)
(cid:1)
(cid:1)
Ce sont les BLAS parall les
Interface aussi proche que possible de celle des BLAS
Implant e au dessus de BLAS + BLACS
"
"
BLAS : calculs locaux
BLACS : communications
Consid r e comme un noyau pour dautres biblioth ques num riques
parall les
45
ScaLAPACK (Scalable LAPACK)
(cid:1)
(cid:1)
(cid:1)
(cid:1)
La r f rence en terme dalg bre lin aire dense pour machines
m moire distribu e.
Cest une biblioth que domaine public
Implant e au dessus de LAPACK, PBLAS et BLACS
Dautres biblioth ques sont implant es au dessus de ScaLAPACK
46
Succ s de ScaLAPACK
(cid:1)
Extensibilit
"
"
Garantir les performances quand le nombre de processeurs
augmente
quilibrage de la charge via des distributions cycliques 2D
"
"
"
quilibrage de charge pour des petits blocs (grain de
distribution)
Faible co t de communication pour des gros blocs (diminution
du nombre de messages)
Taille de blocs qui soit le bon compromis entre quilibrage de
la charge et la latence des communications
47
(cid:1)
Strat gie dun succ s
"
"
"
Code source (Fortran 77 et C), donc portabilit
Structure hi rarchique (BLAS, BLACS, &)
volution continue des biblioth ques de base
" Meilleurs algorithmes
" Optimisation pour la majorit des machines (assembleur)
" Rejaillit de suite sur ScaLAPACK
48
IBM PESSL
(cid:1)
(cid:1)
(cid:1)
PESSL : Parallel Engineering and Scientific Subroutines Library
Biblioth que math matique dIBM : calcul num rique haute performance
sur IBM SP et clusters dIBM RS/6000
Alg bre lin aire, FFT, g n ration de nombres al atoires, &
49
Fondements du Parall lisme
Formes
Sources
Granularit
Mod les
Paradigmes
Performances
Biblioth ques
"Implicite
"Explicite
"Donn es
"T ches
"Flux
"Grosse
"Moyenne
"Fine
"PRAM
"Passage
de msgs
"&
"//me de phases
"diviser pour //er
"ma tre/esclaves
"&
"Acc l ration
"Efficacit
"Scalabilit
"BLAS
"LAPACK
--------------
"BLACS
"PBLAS
"ScaLAPACK
"PESSL
"&
50