OpenMP - запуск параллельного кода внутри параллельного кода

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

#pragma omp parallel for

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

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

Ответ 1

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

Вызов

omp_set_nested(1);

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

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