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