我試圖並行化代碼。我的代碼看起來像這樣 -在OpenMP中使用#pragma parallel並行共享的嵌套循環
#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] >>
在執行此代碼時,我從循環的串行執行中獲得了不同的結果。 我無法理解我做錯了什麼。
我也試過崩潰()
#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[][] >>
另一件事我想是有每個循環,而不是崩潰前()OMP並行的#pragma。
這個問題,我認爲是數據依賴。任何想法如何在數據依賴的情況下並行化?