「#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
、外側のループの上に 1 秒必要です。
あなたが言ったように使用できますが、私があなたであり、反復ごとに fork/join を避けたい場合、これは良いことではありません。次のようにします。
#pragma omp parallel for
for(j loop)
{
for(i loop)
{
//Modify your code if necessary.
}
}
上記のスニペットで、最大スレッド数が 10 で j の長さが 100 の場合、10 個のスレッドがあり、それぞれが j の 10 回の反復を実行します。