programmation paralléle
Transcript of programmation paralléle
-
8/3/2019 programmation parallle
1/24
Cour :
Programmation parallle etcommunication entre
processus par envoie demessage.
-
8/3/2019 programmation parallle
2/24
Prsentation gnral :
Une machine parallle (appele aussi systme
multiprocesseur) est un systme compos deplusieurs processeurs.
Les processeurs travaillent d'une manireindpendante et peuvent communiquer entre euxpour changer les donnes ou partager une mmoirecommune.
Les processeurs fonctionnent, soit en modeasynchrone (chaque processeur a sa propre unit decontrle), soit en mode synchrone (tous lesprocesseurs sont dirigs par la mme unit decontrle).
-
8/3/2019 programmation parallle
3/24
Communication entre processus :
Les communications entre les processeurssonteffectues, soit :
via une mmoire globale (architecture mmoirepartage).
via l'intermdiaire d'un rseau d'interconnexion(architecture mmoire distribue) qui reliephysiquement les processeurs entre eux.
- Application parallle :
Un ensemble de processus indpendants
schangeant des messages.- Implantation nave :
Un processus par processeur transit desmessages via le rseau.
-
8/3/2019 programmation parallle
4/24
Architecture des machines parallles:
Les Machines Passage de Messages (ou Message-
Passing Architectures) sont des Multiprocesseurs Mmoire Distribue fonctionnant en modeMIMD. Cette classe d'architectures est drive dela classe des Multiprocesseurs Mmoire
Partage. Les Machines Passage de Messages sediffrencient essentiellement desMultiprocesseurs Mmoire Partage par le faitque l'on passe d'une mmoire centralise, ayant lemme espace d'adressage visible de tous les
processeurs, une mmoire distribue o chaqueprocesseur ne voit que l'espace d'adressage de sapropre mmoire locale.
-
8/3/2019 programmation parallle
5/24
-
8/3/2019 programmation parallle
6/24
Dfinition de la communication par Passage deMessages :
Il n'y pas d'espace d'adressage global des donnes,mais un espace global de processus. Les processusne connaissent que leurs donnes locales et
l'adresse des processus avec qui ils doiventcommuniquer. La communication entre deuxprocessus se fait par copie de donnes et envoi dela copie dans un message. Un message est donccompos de l'adresse du processus destinataire etde la copie de la donne transfrer.
-
8/3/2019 programmation parallle
7/24
Modle de programmation parallle entre processus :
Programmation par change de messages :
Un des aspects du calcul parallle,indpendamment de la machine-cible, consiste
exploiter au mieux le paralllisme duneapplication. Pour rpondre ce problme, plusieursenvironnements de programmation paralllessinspirent du paradigme de programmation par
processus communicants.On va tudier deux environnements deprogrammation par processus communicants lesplus populaires : PVM et MPI.
-
8/3/2019 programmation parallle
8/24
La bibliothque de passage de messages PVM :
PVM (Parallel virtual Machine) est unenvironnement de programmation parallle, parprocessus communicants, trs populaire.
Dvelopp et distribu par luniversit duTennessee et par le Oak Ridge NationalLaboratory, il est devenu un standard de fait.Dvelopp lorigine pour utiliser des rseaux de
stations de travail homognes ou htrognescomme des machines parallles virtuelles, il estgalement disponible sur la plupart des machinesparallles ddies.
-
8/3/2019 programmation parallle
9/24
Figure1 : Machine PVM
-
8/3/2019 programmation parallle
10/24
L'envoi d'un message se subdivise en 3 tapes:
1) Initialisation d'un buffer :
Avant d'envoyer un message, il faut demander PVM (Parallel Virtual
Machine) d'initialiser un buffer dans lequel sera recopi le message
transmettre. Ceci se fait l'aide de la primitive.
2) Copie du message dans le buffer :Avant d'tre transmis le message doit tre copi dans le buffer. Pour des
raisons d'optimisation de transmission, PVM compresse le message avant de
l'envoyer.
3) Envoi des donnes contenues dans le buffer :
L'envoi des donnes ainsi stockes dans le buffer se fait en utilisant la
primitive.
-
8/3/2019 programmation parallle
11/24
-
8/3/2019 programmation parallle
12/24
Pour L'envoi d'un message il y a 6 sous-
programmes : Initialisation de l'environnement :MPI_INIT
Identification du processus d'une application :MPI_COMM_RANK
Rcupration du nombre de processeurs :MPI_COMM_SIZE
Envoi de message dun processus un autre :MPI_SEND
Rception dun message:MPI_RECV
Sortie de MPI :MPI_FINALIZE
-
8/3/2019 programmation parallle
13/24
Voici un premier programme qui permet de prendre contact aveclenvironnement MPI :
/////////////////////////////////////////////
// hello.c
// Hello world parallle
/////////////////////////////////////////////
#include
#include
#include
int main(int argc, char** argv){ int myrank, size;
MPI_Init(&argc,&argv);
MPI_Comm_size(MPI_COMM_WORLD,&size);
MPI_Comm_rank(MPI_COMM_WORLD,&myrank);
printf("Hello world, je suis le processus %d.\n",myrank);
MPI_Finalize();
exit(EXIT_SUCCESS);
}
Aprs compilation : %hcc o hello hello.c et excution : %mpirun np 2 hello, on obtient le rsultatsuivant :
Hello world, je suis le processus 0.
Hello world, je suis le processus 1.
-
8/3/2019 programmation parallle
14/24
1-Communication point point :
1-Un processeur source envoie un message un processeur,
destinataire.2-La communication se passe lintrieur dun communicateur.3-Le processeur destinataire est identifi par son rang dans le
communicateur.
Envoi bloquant (blocking send) :mpi_sendLe processus qui envoie le message se bloque jusqu' rceptiondu message
Envoi non bloquant (nonblocking send) :mpi_isendLe processus envoie le message et continue son excution
Rception bloquante (blocking receive) :mpi_recvLe processus rcepteur bloque jusqu' ce qu'un message soit
disponible
Rception non bloquante (nonblocking receive) :mpi_irecvLe processus reoit soit un message, soit un null.
-
8/3/2019 programmation parallle
15/24
Figure2: Modle de communication
Point Point
-
8/3/2019 programmation parallle
16/24
2-Communications collectives :
MPI permet galement la communicationcollective. Pour ce faire, on doit dabord dfinir
diffrents groupes parmi les units de traitementdisponible. Ensuite, il faut affecter chacun desgroupes un communicateur qui permettra de diffuserun message parmi toutes les units du groupe.
-
8/3/2019 programmation parallle
17/24
Modles de communication:Modle unidirectionnel : on ne peut pas effectuer
simultanment l'envoi de Pi vers Pj et de Pj vers Pisur le mme canal.
Modle bidirectionnel : envoi et rception(simultanment) sur le mme canal
-
8/3/2019 programmation parallle
18/24
Exemple :But : envoyer un message M de taille m d'un processeur Pi vers Pj,
distants de h (h est le nombre de liens entre Pi et Pj).
1er solution :Envoyer le message M (complet) de proche en proche en passant
par les processeurs intermdiaires (store-and-forward) :
-
8/3/2019 programmation parallle
19/24
2me solution :Utilisation de la technique du pipeline : le message est dcoup en q
paquets, M1, , Mq de mme taille m/q.
-
8/3/2019 programmation parallle
20/24
Problmes :
On va maintenant voir les problmes rencontrs dans les modles passage de message :
1-Problme de satisfaisabilit d'un circuit.Solution :
Approche modulo pour allouer chacune des 65536 affectations auxp processeurs :
for (i = id; i < 65536; i += p)
La fonction check_circuit (id, z)
id : rang du processus
z : reprsentation entire dune affectation possible
la transformation de z en binaire donne les 16 valeursdentre du
circuitfor (i = 0; i < 16; i++)
V[i] = EXTRACT_BITS(z, i);
le if de 9 lignes est le codage la dure du circuit
-
8/3/2019 programmation parallle
21/24
2-Verrous mortels (deadlocks) :
Un processus est dans un tat de deadlock sil est bloqu en
attendant une condition qui ne deviendra jamais vraie.
3-Difficult de programmation (compliqu utiliser):
-Gestion explicite de:La distribution des donnes.
L'ordonnancement des tches.
La communication entre les tches.
- Consquences:
Peut prendre beaucoup de temps.
Peut mener plusieurs erreurs.
Cots additionnels de dveloppement.
-
8/3/2019 programmation parallle
22/24
Ordinateur parallle Romeo(SunFire 6800)SMP 24 X UltraSparc III 900 Mhz24 Go de mmoire210 Go d'espace disque
-
8/3/2019 programmation parallle
23/24
Bibliographie:
*http://www.limsi.fr/~jps/enseignement/enseignement.ht
m
*Cours DESA ANITS Abdelhak LAKHOUAJA.
*Cours Modle passage de messages de Pierre
Delisle(http://wwwens.uqac.ca/~pdelisle/fichiers/ppm/Cours4-PassageMessages.pdf)
http://www.limsi.fr/~jps/enseignement/enseignement.htmhttp://www.limsi.fr/~jps/enseignement/enseignement.htmhttp://wwwens.uqac.ca/~pdelisle/fichiers/ppm/Cours4-PassageMessages.pdfhttp://wwwens.uqac.ca/~pdelisle/fichiers/ppm/Cours4-PassageMessages.pdfhttp://wwwens.uqac.ca/~pdelisle/fichiers/ppm/Cours4-PassageMessages.pdfhttp://wwwens.uqac.ca/~pdelisle/fichiers/ppm/Cours4-PassageMessages.pdfhttp://wwwens.uqac.ca/~pdelisle/fichiers/ppm/Cours4-PassageMessages.pdfhttp://wwwens.uqac.ca/~pdelisle/fichiers/ppm/Cours4-PassageMessages.pdfhttp://www.limsi.fr/~jps/enseignement/enseignement.htmhttp://www.limsi.fr/~jps/enseignement/enseignement.htmhttp://www.limsi.fr/~jps/enseignement/enseignement.htm -
8/3/2019 programmation parallle
24/24
Merci pour
votre
attention