OpenAcc英特尔Fortran编译器

时间:2016-10-24 13:03:44

标签: fortran openacc

我正在尝试使用OpenAcc在Fortran中编译代码。到目前为止,我一直在使用支持OpenMP的Intel fortran,但显然不支持OpenAcc。任何人都可以建议一个支持OpenAcc的免费编译器吗?

我尝试运行的确切代码可以在this链接上找到,但为方便起见,我也将其粘贴在下面:

program rbc
use omp_lib     ! For timing
implicit none
real, parameter :: beta = 0.984, eta = 2, alpha = 0.35, delta = 0.01, &
       rho = 0.95, sigma = 0.005, zmin=-0.0480384, zmax=0.0480384;
integer, parameter :: nz = 4, nk=4800;
real :: zgrid(nz), kgrid(nk), t_tran_z(nz,nz), tran_z(nz,nz);
real :: kmax, kmin, tol, dif, c(nk), r(nk), w(nk);
real, dimension(nz,nk) :: v=0., v0=0., ev=0., c0=0.;
integer :: i, iz, ik, cnt;
logical :: ind(nk);
real(kind=8) :: start, finish   ! For timing
real :: tmpmax, c1  

   !$acc region
   !$acc do parallel
    do ik = 1,nk;
       !$acc do parallel
       do iz=1,nz;        
          tmpmax = -huge(0.)
          do i = 1,nk
             c1 = c0(ik,iz) - kgrid(i)
             if(c1<0) exit
             c1 = c1**(1-eta)/(1-eta)+ev(i,iz)
             if(tmpmax<c1) tmpmax = c1
          end do
          v(ik,iz) = tmpmax
       end do
    end do
    !$acc end region

3 个答案:

答案 0 :(得分:5)

PGI Community Edition是PGI Fortran,C和C ++编译器和工具的免费版本,包括OpenACC,OpenMP和CUDA Fortran for Linux / x86,Linux / OpenPOWER和macOS。看这里http://www.pgroup.com/products/community.htm

答案 1 :(得分:3)

现在,OpenACC唯一免费的编译器选择是GNU,但它的支持仍然不完整。我想你可以使用其中一个研究编译器,比如OpenUH或OpenARC,但我不确定它们在生产环境中有多大用处。如果您与大学有关联,您可以获得PGI的免费1年许可证(可更新)。如果您不这样做,您仍然可以免费试用,看看它是否符合您的需求。

答案 2 :(得分:0)

LLVM fortran编译器(Flang)旨在支持OpenACC。目前,他们仅支持对简单的“ hello-world”类型程序进行OpenACC解析,但是正在积极开发全面支持。

https://github.com/llvm/llvm-project/tree/master/flang/