我在多个独立线程中有#pragma omp parallel for
,但我不确定这些并行区域是否可以同时并发运行。
将那些常规线程更改为omp任务区域会很不方便。
那么可以同时在两个独立的线程中执行两个OpenMP并行区域,或者一次只能运行一个区域吗?
void f1()// executed in thread 1
{
#pragma omp parallel for
for(...)
{/*do something*/}
}
void f2()//executed in thread 2
{
#pragma omp parallel for
for(...)
{/*do something else*/}
}
所以我的问题是:f1()
和f2()
中的并行循环是否同时运行,其总线程数是OpenMP用于一个并行区域的两倍,或者它将运行一次只有一个并行块,另一个将等待信号量?