unrollディレクティブ(unroll(n)|nounroll)は、コンパイラに、カウントされたループをアンロールする回数を伝えます。このディレクティブの構文は次のとおりです。
#pragma unroll
#pragma unroll(n)
#pragma nounroll
n は0から255までの整数定数です。 unrollディレクティブは、各forループが動作するfor文の前になければなりません。 nを指定する場合、最適化機構はループをn回アンロールします。 n を省略する場合、またはnが有効範囲外である場合、最適化機構はループをアンロールする数数を割り当てます。unrollディレクティブは、コマンドラインから行われるループ・アンロールの設定を変更します。ディレクティブは、最も内側のネストされたループにのみ適用されます。外側のループに適用された場合、無視されます。コンパイラは、nとループカウンタを比較することによって、正しいコードを生成します。
unrollディレクティブの例 |
---|
#pragma unroll(4)
for(i=1; i<m; i++) { b[i]=a[i]+1; d[i]=c[i]+1; } |