On Feb 17, 2021, at 12:24 PM, Luis Diego Pinto via users 
<users@lists.open-mpi.org> wrote:
> 
> Dear Christoph Niethammer, 
> 
> thank you very much for the advice, now i have imported the module "mpi_f08" 
> and indeed those issues are fixed.

Exxxcellent.  mpi_f08 is definitely the way to go for all new Fortran MPI code.

> The compilation seems to work fine but unfortunately i got another small 
> class of errors. I report a representative example below, maybe among the 
> community some other user could have encountered it:
> 
> 
>  543 |   call 
> MPI_Isend(rho_stock(NA_mpi:NB_mpi),DELTA_N,MPI_DOUBLE,0,rank_mpi, 
> MPI_COMM_WORLD,req1,ierr)
>      |                                                                        
>                           1
> Error: There is no specific subroutine for the generic ‘mpi_isend’ at (1)

This means that you're not calling MPI_Isend with the correct parameters.  

The compiler message is unfortunately not entirely helpful, but it specifically 
means that there's no MPI_Isend() in the mpi_f08 module with the exact types of 
parameters that you used.

Triple check the types of each parameter to this call with the expected type 
for MPI_Isend.  E.g., make sure DELTA_N and RAML_MPI are INTEGERs, and req1 is 
a TYPE(MPI_Request).

> Similar kind of such error are reported for the functions MPI_Irecv,MPI_Recv, 
> MPI_Send, but i guess that it may depend on some new command or some new way 
> of defining type variable/arrays that should be done with the new f08 
> library, which are different from the previous one.
> 
> Is there some useful reference guide that shows the mayor differences between 
> the old and the new library, possibly with some examples?


Here's the high-level differences:

- ierr is an optional argument
- MPI handles now have their own types (vs. all being INTEGER)
- parameter type checking is strictly enforced on calling MPI subroutines and 
functions

-- 
Jeff Squyres
jsquy...@cisco.com

Reply via email to