Как распараллелить вложенные циклы FOR с OpenMP - PullRequest
0 голосов
/ 16 апреля 2019

Я пытаюсь перебрать большой файл PPM, содержащий данные о пикселях, перебирая файл в ячейках (строки х столбцы). Я хочу оптимизировать эти два цикла FOR с помощью функции omp_set_nested, но получаю следующую ошибку:

termination test in OpenMP 'for' statement has improper form

Для простоты я убрал функции, связанные с извлечением самих данных, и только что включил циклы FOR.

Сводка: Как я могу сохранить i < OUTER_LOOPS && i < OUTER_LOOPS и j < 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");
                    }

            }
...