i am Responsible for the work that transfortm the grapes model(fortcasting wheather model ) using the intel mpi to using cuda with openmpi.
i encounter some question . the old code(the suffix is .F) , i chane the suffix(.F) to .f90 , when compiling it , it print some error .
first ,i want to know the difference between .F and .f90
why compiling procdue error after change the suffix , the follow is the a part of the code, compiling it printing :
PGF90-S-0081-Illegal selector - KIND parameter has unknown value for data type
i search the answer for the issue , it said define the parameter ,it will be ok ,but in fact ,it can’t solve the problem
the compile is mpif90
subroutine ad_glob_updatehalo_ddouble_3d(fb,grid,halo,vpolar,isu,diagv)
use mpi
implicit none
logical ,external :: On_Monitor
parameter(db=16)
type( type_model_partition ) :: grid
real(kind=db), dimension(grid%ims:grid%ime,grid%kms:grid%kme,grid%jms:grid%jme),intent(inout) :: fb
integer,optional,intent(in) :: halo
logical,optional,intent(in) :: vpolar, isu, diagv
!local var:
integer :: ims,ime,jms,jme,kms,kme, &
ids,ide,jds,jde,kds,kde, &
its,ite,jts,jte,kts,kte
real(kind=16), dimension(:), allocatable :: ws, wr, es, er, ss, sr, ns, nr
real(kind=16), dimension(:,:,:), allocatable :: sbuf, rbuf
real(kind=16), dimension(:,:,:), allocatable :: buf
real(kind=16), dimension(grid%kms:grid%kme) :: u0, v0
integer :: len_s, len_r, len_sn, bdy_h, bdy, bdy_s, bdy_r
integer :: ierr, status(MPI_STATUS_SIZE,4),tag
integer :: i,j,k,nx,ii,idx
integer :: mpidatatype
mpidatatype = mpi_real16
if(grid%global_opt) then
include ‘ad_glob_updatehalo_3d.inc’
else
! write(0,*) “not ok for reg of ad_glob_updatehalo”
include ‘ad_reg_updatehalo_3d.inc’
endif
end subroutine ad_glob_updatehalo_ddouble_3d