プラグマを使用
しても、サブルーチンの呼び出しfoo
がベクトル化されないプログラムがあります。呼び出しがベクトル化されない理由はわかりません。それはメモリ参照のためですか?IVDEP
vec-report3
注:arr1、arr2、arr3はすべて共通のブロックで定義されています
program test
integer i, j, k, n
double precision arr1(5, 5, n, n), aar2(5, 5, n, n), aar3(5, n, n, n)
!DIR$ IVDEP
do i=1, n
call foo(arr1(1, 1, i, k), aar2(1, 1, i, k), aar3(1, i, j, k))
enddo
end
subroutine foo( fooarr1, fooarr2, fooarr3 )
implicit none
double precision fooarr1(5, 5), fooarr2(5, 5), fooarr3(5)
some computations on fooarr1, fooarr2, fooarr3
fooarr1,fooarr2,fooarr3 gets updated. But there are no vector dependance
return
end