Я уже некоторое время думал о том, чтобы встроить или использовать declare simd
в цикле simd.Я наткнулся на эту статью , в которой у ОП есть аналогичный вопрос, но ответ мне не совсем понятен.
У меня есть два вопроса:
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