如何使用OpenMP加快循环速度?

时间:2019-07-07 19:01:12

标签: parallel-processing openmp

我正在尝试使用OpenMP来加速用于模糊图像的图像处理算法,但是时间甚至比顺序算法还要长。

我尝试放置pragma omp parallel for,使用命令g++ -fopenmp Sorucecode.cpp进行编译,然后使用export OMP_NUM_THREADS=4,然后运行可执行文件,但这不起作用。

void runFilter(float* input, float* output, int width, int height) {
   int i, j, row, col, idx, r_i, r_j;
   float new_val;
   #pragma omp parallel for collapse(2) private(col, row, new_val, i, j, r_i, r_j, idx)
   for(col = 0; col < width; col++)
        for (row = 0; row < height; row++)
        {
                float new_val = 0.0f;
                for (i = -ker_x_dim; i < ker_x_dim; i++) {
                        r_i = i + ker_x_dim;
                        for (j = -ker_y_dim; j < ker_y_dim; j++) {
                                r_j = j + ker_y_dim;
                                idx = get1dIndex(width, height, col + i, row + j); 
                                new_val += kernel[r_i*(ker_y_dim * 2) + r_j] * input[idx];
                        }
                }
                output[get1dIndex(width, height, col, row)] = new_val;
        }
}

我使用clock_t变量测量时间。

0 个答案:

没有答案