“#pragma omp parallel for”能否以下列形式在循环内使用:
For (i=0;i<...;.i+=1)
{ #pragma omp parallel for
for(j=0;j<...;j+=1)
{ Some code.....}
- 这会在 'j' 上并行化循环吗?
感谢提前!
“#pragma omp parallel for”能否以下列形式在循环内使用:
For (i=0;i<...;.i+=1)
{ #pragma omp parallel for
for(j=0;j<...;j+=1)
{ Some code.....}
感谢提前!
是的,可以这样使用。但是编译器指令必须单独一行
for( ... )
{
#pragma omp parallel for
for( ...
//..
此外,这确实只会并行执行内部循环。如果您需要两个循环并行执行,#pragma omp parallel for
则需要在外循环上方有一秒钟。
它可以像你说的那样使用,但如果我是你并且想要避免每次迭代时分叉/加入,这不是一件好事,我会这样做:
#pragma omp parallel for
for(j loop)
{
for(i loop)
{
//Modify your code if necessary.
}
}
在上面的代码片段中,如果您的最大线程数为 10 并且您的 j 长度为 100,那么将有 10 个线程,每个线程将运行 10 次 j 迭代。