OpenMP - Запуск параллельного кода внутри параллельного кода - PullRequest
10 голосов
/ 07 сентября 2011

У меня есть функция compute(), в которой есть параллельное умножение матриц внутри нее с использованием OpenMP

#pragma omp parallel for

Эта функция вызывается много раз в цикле, который я хотел бы запустить параллельно.Будут ли проблемы с запуском параллельного кода внутри другого параллельного кода?

Это с ++, скомпилированное в Ubuntu.

1 Ответ

9 голосов
/ 07 сентября 2011

Он будет работать нормально, но вам нужно включить вложенность OpenMP, чтобы он работал.

Вызов

omp_set_nested(1);

в начале программы, и это позволитимеют вложенные параллельные области.

Однако: имейте в виду, что в конечном итоге вы можете запустить гораздо больше потоков, чем вы хотите.Таким образом, вы захотите ограничить количество потоков как в верхней, так и во внутренней параллельной области.

...