OpenAcc 英特尔 Fortran 编译器
OpenAcc Intel Fortran Compiler
我正在尝试使用 OpenAcc 在 Fortran 中编译代码。到目前为止,我一直在使用支持 OpenMP 的 Intel fortran,但显然不支持 OpenAcc。谁能推荐一个支持 OpenAcc 的免费编译器?
我尝试 运行 的确切代码可以在 this link 上找到,但为了方便起见,我也将其粘贴在下面:
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
目前 OpenACC 唯一的免费编译器选择是 GNU,但它的支持仍然不完整。我想您可以使用研究编译器之一,例如 OpenUH 或 OpenARC,但我不确定它们在生产环境中有多大用处。如果您隶属于大学,则可以获得 PGI 的免费 1 年许可证(可续订)。如果不是,您仍然可以获得免费试用,看看它是否满足您的需求。
PGI 社区版是 PGI Fortran、C 和 C++ 编译器和工具的免费版本,包括适用于 Linux/x86、Linux/OpenPOWER 和 macOS 的 OpenACC、OpenMP 和 CUDA Fortran。看这里 http://www.pgroup.com/products/community.htm.
LLVM fortran 编译器 (Flang) 旨在支持 OpenACC。目前他们只支持简单的“hello-world”类型程序的 OpenACC 解析,但全面支持正在积极开发中。
我正在尝试使用 OpenAcc 在 Fortran 中编译代码。到目前为止,我一直在使用支持 OpenMP 的 Intel fortran,但显然不支持 OpenAcc。谁能推荐一个支持 OpenAcc 的免费编译器?
我尝试 运行 的确切代码可以在 this link 上找到,但为了方便起见,我也将其粘贴在下面:
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
目前 OpenACC 唯一的免费编译器选择是 GNU,但它的支持仍然不完整。我想您可以使用研究编译器之一,例如 OpenUH 或 OpenARC,但我不确定它们在生产环境中有多大用处。如果您隶属于大学,则可以获得 PGI 的免费 1 年许可证(可续订)。如果不是,您仍然可以获得免费试用,看看它是否满足您的需求。
PGI 社区版是 PGI Fortran、C 和 C++ 编译器和工具的免费版本,包括适用于 Linux/x86、Linux/OpenPOWER 和 macOS 的 OpenACC、OpenMP 和 CUDA Fortran。看这里 http://www.pgroup.com/products/community.htm.
LLVM fortran 编译器 (Flang) 旨在支持 OpenACC。目前他们只支持简单的“hello-world”类型程序的 OpenACC 解析,但全面支持正在积极开发中。