複数の終了ポイントを持つループのベクトル化を許可するように #pragma omp simd を拡張します。
#pragma omp simd early_exit |
複数の終了ポイントを持つループのベクトル化を許可するように #pragma omp simd を拡張します。この節を指定すると、プログラムは次のように振る舞います。
次の例は、このプラグマの使用方法を示します。
次の例でプラグマは、ループの上限条件 j < ub が false になる前にループが終了する場合であっても、for ループのベクトル実行が安全であることを示します。j1 が lb と ub の間の最小の j.で、j が b[j] <= 0 であると仮定します。j1、j1+1、j1+2、… が同じ (最後の) SIMD チャンク内にある場合、b[j1]、b[j1+1]、b[j1+2]、… の読み取りと続く <= 0 の評価は、同じループをスカラー実行した場合とは異なり、無条件に発生します。そのようなベクトル評価の安全性を確保するのは、プログラマーの責任です。必要に応じて、simdlen() 節を使用して SIMD チャンクサイズを制御できます。
例 |
---|
|