相关疑难解决方法(0)

gfortran是否利用DO CONCURRENT?

我目前正在使用gfortran 4.9.2,我想知道编译器是否真的知道如何利用DO CONCURRENT构造(Fortran 2008).我知道编译器"支持"它,但不清楚它是什么.例如,如果打开自动并行化(指定了一定数量的线程),编译器是否知道如何并行化并发循环?

编辑:正如评论中提到的,关于SO的前一个问题与我的非常相似,但它是从2012年开始的,只有最新版本的gfortran已经实现了现代Fortran的最新功能,所以我认为值得询问2015年编译器的当前状态.

parallel-processing fortran gfortran

9
推荐指数
1
解决办法
1006
查看次数

系统地并行化fortran 2008`并发`,可能与openmp

fortran 2008 do 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
Run Code Online (Sandbox Code Playgroud)

迭代可以按任何顺序完成.你可以在这里阅读更多相关信息.

据我所知,gfortran不会自动并行化这些do concurrent循环,而我记得有关gfortran扩散列表的邮件(这里).它只是将它们转换为经典do循环.

我的问题:你知道一种系统地并行化do concurrent循环的方法吗?例如,使用系统的 openmp语法?

parallel-processing fortran openmp

8
推荐指数
1
解决办法
4807
查看次数

标签 统计

fortran ×2

parallel-processing ×2

gfortran ×1

openmp ×1