结合声明simd和内联simd循环

时间:2019-05-09 10:34:42

标签: fortran openmp vectorization simd

一段时间以来,我一直在考虑何时在simd循环中内联或使用declare simd。我碰到了这个article,OP对此也有类似的问题,但是答案对我来说还不清楚。

我有两个问题:

1)同时拥有declare simd(function_name)和内联指令(如!DIR$ ATTRIBUTES::FORCEINLINE(function_name)是否被认为是错误。

2)如何知道要使用哪个?

基本示例

!DIR$ ATTRIBUTES :: FORCEINLINE(call_insimd)
!$OMP DECLARE SIMD(call_insimd)
function call_insimd(a,b)  result(res)
implicit none 
real, intent(in) :: a,b 
real, intent(out):: res 
end function

在主循环中

do i = 1,10000 
!dir$ forceinline

  ar(i) = call_insimd(gf(i),df(i)) 

enddo

0 个答案:

没有答案