hi

On 24/10/17 17:00, Barry Smith wrote:
- With PetscSFBcastBegin() / PetscSFBcastEnd() you currently still have to use 
the C MPI types in the Fortran calling code, rather than the Fortran ones. I 
think it is a bit confusing to have to mix the two up in the same code. If you 
put MPI_INTEGER instead of MPI_INT for example, it dies in F90Array1dAccess() 
with 'unsupported MPI_Datatype'. Could the Fortran MPI types be supported in 
these routines just by adding them as alternatives into the conditionals?
   Hmm, Jed will need to provide wisdom the Linux manual page for MPI_INTEGER 
clearly states:

Note that the Fortran types should only be used in Fortran programs, and the C 
types should only be used in C programs. For example, it is in error to use 
MPI_INT for a Fortran INTEGER. Datatypes are of type MPI_Datatype in C and of 
type INTEGER in Fortran.

   If this is true then there is no place we can do the change properly.

Yes, I first thought that MPI_Type_f2c() would convert Fortran MPI datatypes to the C ones (e.g. turn MPI_INTEGER into MPI_INT), so that the C side of the interface wouldn't have to worry about the Fortran MPI datatypes, but it doesn't really seem to do that.

- Adrian

--
Dr Adrian Croucher
Senior Research Fellow
Department of Engineering Science
University of Auckland, New Zealand
email: [email protected]
tel: +64 (0)9 923 4611

Reply via email to