インテル® Fortran コンパイラー 14.0 ユーザー・リファレンス・ガイド
この例では、確実に m1 >= m2 になるかどうか分からないため、コンパイラーはこのループを並列化しません。
m1 >= m2 であることが分かっており、ループ終了後に W の要素が書き込まれる前にフェッチされることがない場合、次の宣言子を使用できます。
安全であることが分かっている場合は、次のように宣言子を追加できます。
subroutine foo (A, B, C, n, m1, m2) real (4) A(10000, 10), B(10000, 10), C(10000, 10) integer n, m1, m2 real W(1000) integer i, j !DIR$ PARALLEL PRIVATE (W) do i=1,n do j=1,m1 W(j) = A(j,i) * B(j,i) end do do j=1,m2 C(j,i) = W(j) + 1.0 end do end