1
我正在做一些圖像處理,並有一個嵌套for循環。我想要使用OpenMP實現多處理。 for循環看起來像這樣,我已經添加了pragma標籤並聲明瞭一些私有變量。OpenMP:嵌套for循環,幾乎沒有任何執行時間的差異
int a,b,j, idx;
#pragma omp parallel for private(b,j,sumG,sumGI)
for(a = 0; a < ny; ++a)
{
for(b = 0; b < nx; ++b)
{
idx = a*ny+b;
if (imMask[idx] == 0)
{
Wshw[idx] = 0;
continue;
}
sumG = 0;
sumGI = 0;
for(j = a; j < ny; ++j)
{
sumG += shadowM[j-a];
sumGI += shadowM[j-a] * imBlurred[nx*j + b];
}
Wshw[idx] = sumGI/sumG;
}
}
兩個NX的大小和紐約大,我認爲,使用OpenMP,我會得到執行時間的下降減少,取而代之的是幾乎沒有區別。當我實現多線程時,我會做錯什麼?
您還需要使'idx'專用。 –