Transfortm intel mpi to openmpi when use cuda

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
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, &
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 ‘’
! write(0,*) “not ok for reg of ad_glob_updatehalo”
include ‘’
end subroutine ad_glob_updatehalo_ddouble_3d

“.F”, indicates to the compiler that the source contains F77 style fixed formatting. Upper case “F” also indicates that preprocessing should be performed.
“.f90” indicates to the compile that the source contains F90 style free formatting. Lower case “f” does not preprocess the file.

PGF90-S-0081-Illegal selector - KIND parameter has unknown value for data type

Sorry, we don’t support quad-precision (i.e. real(kind=16)). Are you able to use double precision (kind=8)?