1

“#pragma omp parallel for”能否以下列形式在循环内使用:

For (i=0;i<...;.i+=1) 
  { #pragma omp parallel for
      for(j=0;j<...;j+=1) 
       { Some code.....} 
  • 这会在 'j' 上并行化循环吗?

感谢提前!

4

2 回答 2

2

是的,可以这样使用。但是编译器指令必须单独一行

for( ... )
{
    #pragma omp parallel for
    for( ...
//..

此外,这确实只会并行执行内部循环。如果您需要两个循环并行执行,#pragma omp parallel for则需要在外循环上方有一秒钟。

于 2012-08-20T12:52:13.903 回答
0

它可以像你说的那样使用,但如果我是你并且想要避免每次迭代时分叉/加入,这不是一件好事,我会这样做:

#pragma omp parallel for
for(j loop)
{
   for(i loop)
   {
        //Modify your code if necessary.
   }
}

在上面的代码片段中,如果您的最大线程数为 10 并且您的 j 长度为 100,那么将有 10 个线程,每个线程将运行 10 次 j 迭代。

于 2012-08-20T13:00:44.367 回答