我有一個程序,調用子程序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
爲什麼不動了內環路'foo'並嘗試vectorise它。 –
@HristoIliev:這是一個很好的建議。我會試試 – arunmoezhi
@HristoIliev:在我把'foo'裏的循環移開之後,它做了矢量化處理。 我正在尋找其他選項。使這個子程序'foo'元素矢量化函數調用? – arunmoezhi