私は次のコードをコンパイルしようとしていました:
#pragma omp parallel shared (j)
{
#pragma omp for schedule(dynamic)
for(i = 0; i != j; i++)
{
// do something
}
}
しかし、次のエラーが発生しました:エラー:無効な制御述語。
OpenMP標準では、コンストラクターの場合、parallel for
次の演算子のいずれかを「のみ」許可すると規定されています:<
、、。<=
>
>=
許可しない理由がわかりませんi != j
。static schedule
の場合、コンパイラは各スレッドに割り当てられた反復回数を事前に計算する必要があるため、理解できました。しかし、例えばそのような場合になぜこの制限があるのか理解できません。手がかりはありますか?
編集:私が作ったとしても、for(i = 0; i != 100; i++)
私は「<」または「<=」を置くことができたかもしれませんが。