PETSc-FUN3D Code
Satish Balay
balay at mcs.anl.gov
Mon Oct 22 14:54:24 CDT 2007
On Mon, 22 Oct 2007, Satish Balay wrote:
>
>
> On Mon, 22 Oct 2007, Lisandro Dalcin wrote:
>
> > Sathis, I have not much experience with fortran, but... if you take a
> > look for example at
> >
> > http://www.mpi-forum.org/docs/mpi-20-html/node54.htm
> >
> > you will see
> >
> > MPI_ALLOC_MEM(SIZE, INFO, BASEPTR, IERROR)
> > INTEGER INFO, IERROR
> > INTEGER(KIND=MPI_ADDRESS_KIND) SIZE, BASEPTR
> >
> > So what the meaning of INTEGER(KIND=MPI_ADDRESS_KIND) is supposed to be??
>
> If you check mpich2-1.0.5p4/src/binding/f77/type_extentf.c
>
> #include "fproto.h"
> FORT_DLL_SPEC void FORT_CALL mpi_type_extent_ ( MPI_Fint *v1, MPI_Fint * v2, MPI_Fint *ierr ){
> MPI_Aint l2;
> *ierr = MPI_Type_extent( (MPI_Datatype)(*v1), &l2 );
> *v2 = (MPI_Fint)(l2);
> }
>
> MPI_Aint [on the c side] is used ambiguously as either
> INTEGER(KIND=MPI_ADDRESS_KIND) for MPI_ALLOC_MEM or 'INTEGER' for
> MPI_Type_extent.
Ok - I'm getting mislead by the old MPI-1 book I have [perhaps bugs in
it]. Also the ambiguous routines in MPI-1 [like MPI_Type_extent] are
depricated in MPI-2.
Now MPI_Fint is properly defined in MPI-2 standard [as far as F90 is
concerned] as INTEGER(KIND=MPI_ADDRESS_KIND)
So sizeof(MPI_Aint) should probably be same as sizeof(size_t) [with
MPI-2 boundaries], and the fortran code needs to use the appropriate
datatype.
So it might be ok. [we'll still need to define an equivalnet fortran
type.] It just looks awkward to me to use it instead of size_t - but
thats just me..]
Satish
More information about the petsc-dev
mailing list