我有一个程序,即使使用了 pragma,对子
例程的调用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