最終更新:
mikk_ni3_92 2008年05月30日(金) 16:38:57履歴
現在地 >> メニュー >> OpenMP >> OMP::基本編06::2重ループの並列化
2重ループの並列化の時は、
どのループ変数を共有変数にするかに注意する。
何も設定しない場合、OpenMPでは、
[例]
#define NUM 100
#pragma omp parallel for
for(y = 0; y < NUM; ++y)
{
for(x = 0; x < NUM;++x) //xが共有変数である
{
... ...
}
}
ループ内の変数をローカルなものにするか、共有なものにするかは、
で指定する
[例]
#define NUM 100
#pragma omp parallel for private (x)
for(y = 0; y < NUM; ++y)
{
for(x = 0; x < NUM;++x) //xはローカル変数である
{
... ...
}
}
サンプルコード → OMP::2重ループ
2重ループの並列化の時は、
どのループ変数を共有変数にするかに注意する。
何も設定しない場合、OpenMPでは、
- 2重ループの内側の変数が共有変数
[例]
#define NUM 100
#pragma omp parallel for
for(y = 0; y < NUM; ++y)
{
for(x = 0; x < NUM;++x) //xが共有変数である
{
... ...
}
}
ループ内の変数をローカルなものにするか、共有なものにするかは、
- private()
- shared()
で指定する
[例]
#define NUM 100
#pragma omp parallel for private (x)
for(y = 0; y < NUM; ++y)
{
for(x = 0; x < NUM;++x) //xはローカル変数である
{
... ...
}
}
サンプルコード → OMP::2重ループ