У меня есть кусок кода в следующем стиле:Вложенный цикл OpenMP
for (set=0; set < n; set++) //For1
{
#pragma omp parallel for num_threads(x)
for (i=0; i < m; i++) //For2: this loop can be executed in parallel
{
commands...
}
for (j=0; j < m; j++) //For3: this loop depends on the output of the For2 and also should be executed in a sequential way
{
commands...
}
}
Как вы заметили, у меня есть п независимых наборов (внешний контур, т.е. for1). Каждый набор состоит из параллельного цикла (For2) и последовательного раздела (For3), который должен выполняться после For2.
Я уже использовал «#pragma omp parallel для num_threads (x)» для For2, чтобы сделать его параллельным.
Теперь я хочу сделать внешний контур (For1) параллельным. Другими словами, я хочу запускать каждый набор параллельно.
Я очень благодарен, если вы можете сообщить мне, как это возможно в openmp.
В одну сторону может быть создано n потоков, соответствующих каждому набору. это правильно? Но мне интересно, есть ли другой способ, полностью используя функции openmp?
благодарит заранее.