ループアンロールのサポート

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