[petsc-dev] PetscSF in Fortran

Adrian Croucher a.croucher at auckland.ac.nz
Mon Oct 23 23:11:51 CDT 2017


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: a.croucher at auckland.ac.nz
tel: +64 (0)9 923 4611



More information about the petsc-dev mailing list