如何使用OpenMP将嵌套的FOR循环并行化

时间:2019-04-16 14:43:41

标签: c optimization parallel-processing openmp cpu

我正在尝试通过在单元格(行x列)中循环访问包含像素数据的大PPM文件。我想通过使用omp_set_nested函数优化这两个FOR循环,但是出现以下错误:

termination test in OpenMP 'for' statement has improper form

为简单起见,我取消了与检索数据本身有关的功能,仅添加了FOR循环。

摘要:如何将i < OUTER_LOOPS && i < OUTER_LOOPSj < INNER_LOOPS && j < INNER_LOOPS保持在FOR循环条件之内而不会出错?

更新:我现在意识到,i < OUTER_LOOPS && i < OUTER_LOOPS比简单的i < OUTER_LOOPS等效率低得多,我犯了一个荒谬的错误。

我要实现的目标:

omp_set_nested(1);
int i, j;
#define OUTER_LOOPS width
#define INNER_LOOPS height

#pragma omp parallel for
    for (i = 0; i < OUTER_LOOPS && i < OUTER_LOOPS; i += 4) {     //Issue probably here
                #pragma omp parallel for
                    for (j = 0; j < INNER_LOOPS && j < INNER_LOOPS; j += 4) { //Issue probably here
                        printf("Hello world\n");
                    }

            }

0 个答案:

没有答案