インテル® C++ コンパイラー 14.0 ユーザー・リファレンス・ガイド
1 つ以上のループの反復をすべてのスレッドチームのマスタースレッド間で共有するかどうかを指定します。
clause |
省略するか、次の節を 1 つ以上指定できます。
|
このプラグマは、teams 構造内の緊密な入れ子構造の 1 つ以上のループに関連付けられます。collapse を指定すると、omp for プラグマで collapse 節を指定した場合と同様に、複数のループを 1 つの反復シーケンスに結合できます。
collapse 節を使用してループの数を指定します。collapse 節を指定しない場合、プラグマはその直後のループにのみ適用されます。
次の例は、このプラグマを使用し、2 つの最外ループを並列化して 2 つの正方行列の乗算を行います。
#include <omp.h>
void matmul (float *a, float const *b, float const * c, int N)
{
#pragma omp teams
{
int i;
#pragma omp distribute
for (i=0; i<N; i++)
{
int j;
#pragma omp parallel for
for (j=0; j<N; j++)
{
int k;
for (k=0; k<N; k++)
{
a[i*N+k] = a[i*N+k] + b[i*N+j] * c[j*N+k];
}
}
}
}
}