Из вашего опыта, какой фрагмент кода является самым быстрым?
Векторизация
x(2:ndof - 1) = x(2:ndof - 1) - dt*( &
x(ndof + 1:ndof+ ndof - 2) + (ndof + 3:ndof + ndof))
Векторизация + рабочая доля
!$omp parallel workshare schedule (runtime)
x(2:ndof - 1) = x(2:ndof - 1) - dt*( &
x(ndof + 1:ndof+ ndof - 2) + (ndof + 3:ndof + ndof))
!$omp end parallel workshare
Явная l oop + отдельная инструкция множественные данные openmp
!$omp parallel do simd schedule (runtime)
do idx = 2, ndof - 1, 1
x(idx) = x(idx) - (dt*coef*( &
x(ndof+idx - 1) + x(ndof + idx+1)))
end do
!$omp end parallel do simd
Я не включаю простой явный l oop, поскольку я хочу улучшить производительность.