Programmation parallèle

Programming, Parallel Computing · course

Voir tous les documents en programmation

Programmation parall le

Objectifs

Afin de nous rendre compte de la programmation des machines parall les

(implicitement du style de programmation pour une Grid) nous allons programmer

en langage C ou C++ en utilisant deux API :

" MPI (Massage Passing Interface)

" OpenMP (Open Multiprocessing)

Ces deux API sont tr s diff rentes, voire compl mentaire et peuvent s'utiliser

ensemble pour la r alisation d'une application (programmation hybride). Dans cette

partie on tentera de r aliser des programmes soit avec l'une, soit avec l'autre des API,

jamais

deux.

les

MPI illustre le paradigme de la m moire distribu e (chaque unit de traitement

dispose uniquement de sa propre m moire) et OpenMP illustre le paradigme de la

partag e.

m moire

Installation

Il faut que vous ayez install le compilateur gcc sur votre machine. Pour OpenMP il

n'y a rien faire, le compilateur gcc impl mente d j cette API. Pour MPI on

site OpenMPI.

conseille

d'installer

fortement

depuis

l'API

le

Publicité

OpenMP

Une application en OpenMP est une application mono-processus avec un thread

principal et, ventuellement, d'autres threads lanc s en parall le. Les variables du

programmes (dans la fonction main ou toute autre fonction) deviennent des variables

(private).

communes

(shared)

priv

ou

compilation

La

gcc

L'ex cutable

executable ou ./executable

Quelques exemples de programmes :

s'ex cute

comme

se

r alise

avec

:

-fopenmp prog.c ....

:

sous Unix/Linux

tout

ex cutable

" programme qui lance un nombre de thread et chacun affiche son num ro

Publicité

: omp_hello.c avec diverses versions pour voir clairement l'usage des

variables partag es ou priv es et

l'importance d'une barri re de

synchronisation

: omp_hello_V2.c, omp_hello_V3.c, omp_hello_V4.c, omp_hello_V5.c.

" programme pour lequel on lance des threads qui communiquent en anneau (sur

la base de leur num ro forment un anneau virtuel) : anneau.c

calcule

" programme

date

qui

de

la

P ques (facile

!) : date_Paques.c (illustration en programme d'un exercice en TD).

" programme qui fait la somme d'un tableau de valeurs g n r es al atoirement

: somme_omp.c version avec la partition des donn es en blocks de taille gale

(+1), somme_omp_V2.c version avec un thread en plus et le dernier block de

taille 'reste'

" programme qui impl mente le tri exhaustif tri_omp.c

" programme pour le calcul de pr fixe prefixe_parallel.c et une version qui n'est

pas correcte prefixe_blague.c

MPI

Une application crite en C et MPI se composera des plusieurs processus, les

processus seront obtenus partir du m me code C (SPMD - Single Program Multiple

Data) ou partir des codes diff rents (MPMD). Toutefois, on conseille de ne pas

utiliser plus de 3 codes (programmes) diff rents pour une m me application.

Publicité

:

se

compilation

La

mpicc prog.c -o executable

programme

Chaque

s par ment.

commande

compile

avec

fait

se

la

se

fait

application MPI

:

L'ex cution d'une

-np nb_processus executable

mpirun

Si l'application se compose des processus issus des programmes diff rents, on

compile avec la commande mpicc chaque programme, chaque programme a sa propre

fonction main(), on construit autant d'ex cutables que de programmes et on indique

dans la commande mpirun le nombre de processus ayant le m me ex cutable :

-np n2 executable2 ...

mpirun

Publicité

Quelques exemples de programmes :

-np n1 executable1 :

commande

avec

la

" programme qui d tecte son num ro de process et l'affiche ( quivalent du

"Hello, world!") : mpi_code.c

" programme pour lequel les processus, sur la base de leur num ro, forment un

anneau virtuel : mpi_anneau.c

" programme distribu qui calcule

le

triangle de Pascal (difficile

!) : mpi_pascal.c

Regardez attentivement le fonctionnement de ces programmes qui d butent tous pas

la d tection de num ro d'ordre du processus dans le cadre de son groupe (appel

communicateur).

Probl mes r solus compl tement

"

"

le calcul de la date de P ques : solution s quentielle, en m moire partag e et

en m moire distribue avec MPI (l'ex cutable attend en entr e l'ann e de

r f rence)

le produit entre une matrice et un vecteur : solution s quentielle, parall lisme

de threads au niveau du calcul, avec un nombre de threads pr d finie, en MPI

(l'ex cutable attend en entr e les noms de fichiers d'entr e et de sortie)