programmation paralléle

download programmation paralléle

of 24

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