→ justdemon:自問自答 omp_set_nested() 01/11 19:42
想請問有使用過openmp的板友們
openmp是否可以支援 在 parallel sections 裡面再次使用 parallel for
如下
#pragma omp parallel sections
{
#pragma omp section
{
#pragma omp parallel for
for( int i=0; i < 10; i++ )
a[i] += i;
}
#pragma omp section
{
#pragma omp parallel for
for( int i=0; i < 10; i++ )
b[i] += i;
}
}
我知道上面這個 example code 很蠢 不會有人這樣寫
不過我所要表達的意思是 我可否在section內部 再使用一次parallel呢?
因為我每個section所做的事情差別很大
有些可能是在等待外部IO 所以不吃CPU
有些是真的在運算 期望可以平行得到最大的運算能力
我也試過以下的方法 不過無效
#pragma omp parallel sections
{
#pragma omp section
{
fun(a);
}
#pragma omp section
{
等待外部IO sleeping....
}
}
void fun( int a[10] )
{
#pragma omp parallel for num_threads(4)
for( int i = 0; i < 10; i++ )
a[i] += i;
}
代表即使是call另外的平行化的function 還是一樣不行平行運算
只有一個master thread在做運算而已
不知道是否可以開啟某個選項 可以做到我期望的事情呢??
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 219.71.218.214