OpenMP - запуск параллельного кода внутри параллельного кода
У меня есть функция compute()
, которая имеет параллельное умножение матрицы внутри нее с помощью OpenMP
#pragma omp parallel for
Эта функция вызывается много раз в цикле, которую я хотел бы запускать параллельно.
Будут ли возникать проблемы при запуске параллельного кода внутри другого параллельного кода?
Это С++ скомпилировано на Ubuntu.
Ответы
Ответ 1
Он будет работать нормально, но вам нужно включить OpenMP для его работы.
Вызов
omp_set_nested(1);
в начале программы, и это позволит вам иметь вложенные параллельные области.
Тем не менее: имейте в виду, что вы можете запустить гораздо больше потоков, чем хотите. Таким образом, вы захотите ограничить # потоков как верхней, так и внутренней параллельных областей.