インテル® Fortran コンパイラー XE 13.1 ユーザー・リファレンス・ガイド
"!DIR$ IVDEP" を指定されたループの前に追加します。
この宣言子は、指定された行のループのベクトル化を有効にします。条件付きの除算、平方根、逆平方根演算を無条件で実行した場合に、プログラムで想定されている例外セマンティクスを変更しないようにする必要があります。
次の例について考えてみます。
subroutine foo(a, n)
integer n
real a(n)
do i=1,n
if (a(i) .gt. 0) then
a(i) = 1 / a(i)
endif
enddo
end
この例では、"a(i) .gt. 0" という条件は除算の浮動小数点例外を保護しているため、コンパイラーはこのループをベクトル化できません。
安全であることが分かっている場合は、次のように宣言子を追加できます。
subroutine foo(a, n)
integer n
real a(n)
!dir$ ivdep
do i=1,n
if (a(i) .gt. 0) then
a(i) = 1 / a(i)
endif
enddo
end