Распараллеливание Fortran 2008 'делать параллельно' систематически, возможно с openmp
Фортран 2008do concurrent
Конструкция - это цикл do, который сообщает компилятору, что никакие итерации не влияют ни на одну другую. Таким образом, его можно безопасно распараллелить.
Действительный пример:
program main
implicit none
integer :: i
integer, dimension(10) :: array
do concurrent( i= 1: 10)
array(i) = i
end do
end program main
где итерации могут быть сделаныin any order, Вы можете прочитать больше об этомВот.
Насколько мне известно, gfortran автоматически не распараллеливает этиdo concurrent
циклы, пока я помню письмо gfortran-diffusion-list об этом (Вот). Это превращает их в классическиеdo
петли.
My question: Знаете ли вы способsystematically распараллеливаниеdo concurrent
петли? Например, сsystematic синтаксис openmp?