Die Parallelisierung verschachtelter Schleife in OpenMP mit #pragma parallel for shared

Ich bin versucht zu parallelisieren, ein code. Mein code sieht wie folgt aus -

    #pragma omp parallel private(i,j,k)
    #pragma omp parallel for shared(A)
    for(k=0;k<100;<k++)
     for(i=1;i<1024;<i++)
      for(j=0;j<1024;<j++)
       A[i][j+1]=<< some expression involving elements of A[i-1][j-1] >>

Auf dem ausführen dieses Codes, ich bin immer zu einem anderen Ergebnis über die serielle Ausführung der loops.
Ich bin nicht in der Lage zu verstehen, was ich falsch mache.

Ich habe auch versucht den Zusammenbruch()

    #pragma omp parallel private(i,j,k)
    #pragma omp parallel for collapse(3) shared(A)
    for(k=0;k<100;<k++)
     for(i=1;i<1024;<i++)
      for(j=0;j<1024;<j++)
       A[i][j+1]=<< some expression involving elements of A[][] >>

Andere Sache, die ich versuchte, war mit einem #pragma omp parallel vor jedem Schleifendurchlauf statt Kollaps().

Dem Problem, wie ich denke, ist die Daten-Abhängigkeit. Keine Ahnung, wie zu parallelisieren, im Falle von Daten-Abhängigkeit?

InformationsquelleAutor user2781902 | 2013-10-05
Schreibe einen Kommentar