我应该使用什么#pragma 指令来实现这一点:
for(// This for-loop has to be executed sequentially)
{
for(// This for loop can be executed in parallel)
{
// Do work.
// update shared variable
}
}
据我了解,如果我这样做:
for(// This for-loop has to be executed sequentially)
{
#pragma omp parallel for
for(// This for loop can be executed in parallel)
{
// Do work.
#pragma omp atomic
// update shared variable
}
}
然后在每个外部循环迭代中都会创建新线程,这并不理想。但如果我做类似的事情:
#pragma omp parallel
for(// This for-loop has to be executed sequentially)
{
#pragma omp for
for(// This for loop can be executed in parallel)
{
// Do work.
#pragma omp atomic
// update shared variable
}
}
那么每个线程都会执行外循环吗?那么我怎样才能只创建一次线程并在每次顺序迭代中重用它们呢?