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、外側のループの上に 1 秒必要です。

于 2012-08-20T12:52:13.903 に答える
0

あなたが言ったように使用できますが、私があなたであり、反復ごとに fork/join を避けたい場合、これは良いことではありません。次のようにします。

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

上記のスニペットで、最大スレッド数が 10 で j の長さが 100 の場合、10 個のスレッドがあり、それぞれが j の 10 回の反復を実行します。

于 2012-08-20T13:00:44.367 に答える