245
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];
0 comentarii