Acasa Tehnologie >Adunarea a 4 matrici. Paralelizare folosind OpenMP

>Adunarea a 4 matrici. Paralelizare folosind OpenMP

by Dragos Schiopu

openMP

Pentru a executa in paralel 2 portiuni de cod (in acest articol se vor aduna 2 matrici) folosind OpenMP, se folosesc 2 blocuri omp section, aceste 2 blocuri fiind cuprinse intr-un bloc omp parallel sections.
Exemplu:
Avem 4 matrici, A,B,C,D pe care vrem sa le adunam astfel: X=A+B, Y=C+D si la final Z=X+Y.
Pentru ca acest program sa se execute intr-un timp cat mai scurt, vom paraleliza cele 2 operatii de adunare: X=A+B si Y=C+D.

Cod sursa:

#pragma omp parallel sections private(i,j) shared(A,B,C,D,X,Y)
{
#pragma omp section
for(i=0; i<n; ++i) 
    for(j=0; j<n; ++j) 
          X[i][j] = A[i][j]+B[i][j];

#pragma omp section
for(i=0; i<n; ++i) 
   for(j=0; j<n; ++j) 
      Y[i][j] = C[i][j]+D[i][j];
}

iar la final adunam cele 2 rezultate:

for(i=0; i<n; ++i) 
   for(j=0; j<n; ++j) 
      Z[i][j] = X[i][j]+Y[i][j];

s-ar putea sa-ti placa

0 comentariu

Iulica 25-03-2010 - 12:57