unroll[n]プラグマは、コンパイラーに、カウントされたループをアンロールする回数を伝えます。
このプラグマの一般的な構文は次のとおりです。
構文 |
---|
#pragma unroll #pragma unroll(n) #pragma nounroll |
n は 0 から 255 までの整数定数です。
unroll プラグマは、各 FOR ループが動作する FOR 文の前になければなりません。n が指定されると、最適化機構はループを n 回アンロールします。n が省略されるか、n が有効範囲外の場合、最適化機構はループをアンロールする回数を割り当てます。
このプラグマは、-O3 (Linux*) または /O3 (Windows*) オプションが使用された場合のみサポートされます。unroll プラグマは、コマンドラインから行われるループのアンロールの設定を変更します。
現在、プラグマは最内ループの入れ子にのみ適用されます。外側のループの入れ子に適用された場合、無視されます。コンパイラーは、n とループカウンターを比較することによって、正しいコードを生成します。
例 |
---|
void unroll(int a[], int b[], int c[], int d[]) { #pragma unroll(4) for (int i = 1; i < 100; i++) { b[i] = a[i] + 1; d[i] = c[i] + 1; } } |