Я занимаюсь обработкой изображений и имею вложенный цикл. Я хочу реализовать многопроцессорную обработку с использованием OpenMP. Цикл for выглядит так, где я добавил теги прагмы и объявил некоторые из переменных частными.OpenMP: Вложенная петля, практически любая разница во времени выполнения
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;
}
}
Размера как пе и пу велика, и я подумал, что, используя OpenMP, я хотел бы получить снижение спускаемого во время исполнения, а там почти нет разницы. Я что-то делаю неправильно, когда могу реализовать многопоточность?
Вам также нужно сделать 'idx' частным. –