All,
  I appreciate your help here.  I'm traveling all this week and next.  I'll
forward these comments to some members of my team, but I won't be able to
test/look at anything specific to the HPC configuration until I get back.
I can say that during my troubleshooting, I did determine that
MPI_STATUS_SIZE =3 when I compiled with -m64 and -fdefault-integer-8
options.  However, the memory corruption issues only resolved when I used
MPI_STATUS_IGNORE.

Cheers,
--Jim


On Tue, Nov 12, 2013 at 3:25 PM, George Bosilca <bosi...@icl.utk.edu> wrote:

>
> On Nov 12, 2013, at 19:47 , Jeff Squyres (jsquyres) <jsquy...@cisco.com>
> wrote:
>
> > On Nov 12, 2013, at 4:42 AM, George Bosilca <bosi...@icl.utk.edu> wrote:
> >
> >>> 2. In the 64 bit case, you'll have a difficult time extracting the MPI
> status values from the 8-byte INTEGERs in the status array in Fortran
> (because the first 2 of 3 each really be 2 4-byte integers).
> >>
> >> My understanding is that in Fortran explicitly types variables will
> retain their expected size. Thus, instead of declaring
> >>
> >> INTEGER :: status[MPI_STATUS_SIZE]
> >>
> >> one should go for
> >>
> >> INTEGER*4 :: status[MPI_STATUS_SIZE]
> >>
> >> This should make it work right now.
> >
> > You are correct.  That’s a good workaround.
>
> Not good … temporary ;)
>
> >> However, it is a non-standard solution, and we should fix the status
> handling internally in Open MPI.
> >>
> >> Looking at the code I think that correctly detecting the type of our
> ompi_fortran_integer_t during configure (which should be a breeze if the
> correct flags are passed) should solve all issues here as we are protecting
> the status conversion between C and Fortran.
> >
> > Not quite.  We do already correctly determine ompi_fortran_integer_t as
> a C "int" or "long long" (that's what I saw yesterday when I tested this
> myself).
> >
> > However, the key here is that MPI_STATUS_SIZE is set to be the size of a
> ***C*** MPI_Status (but expressed in units of Fortran INTEGER size -- so in
> the sizeof(int)==sizeof(INTEGER)==4 case, MPI_STATUS_SIZE is 6.  But in the
> sizeof(int)==4, sizeof(INTEGER)==8 case, MPI_STATUS_SIZE is 3.
> >
> > That being said, we *could* change this so that MPI_STATUS_SIZE is
> always 6, and have the C<—>Fortran status routines just do the Right Thing
> depending on the size/type of ompi_fortran_integer_t.
>
> Indeed. We can have an Fortran MPI_Status (only in the Fortran interface)
> that will be 3 ompi_fortran_integer_t, and alter the translation macros to
> do the right thing (translate from C int to the chosen Fortran int).
>
> > Either way, as you say, it's a nonstandard solution.  So I don't know
> which way is "more correct".  On the one hand, we've had it this way for
> *years* (so perhaps there's code out there that uses the George workaround
> and is working fine).  But OTOH, it’s different than what you would have to
> do in the non-dash-i8 case, and so we should make MPI_STATUS_SIZE be 6 and
> then Fortran code will work identically (without INTEGER*4) regardless of
> whether you used -i8 or not.
>
> Honestly, I think that most users will expect that an MPI compiled with
> -i8 will have the status as a 3 8 bytes integers and not some other weird
> combination depending on another layer of the library (compiled in a
> language lacking the subtlety of -i8 ;)).
>
>   George.
>
>
> >
> > Shrug.
> >
> >> Jim, can you go in the include directory on your Open MPI installation
> and grep for the definition of ompi_fortran_integer_t please.
> >>
> >> George.
> >>
> >>
> >> _______________________________________________
> >> users mailing list
> >> us...@open-mpi.org
> >> http://www.open-mpi.org/mailman/listinfo.cgi/users
> >
> >
> > --
> > Jeff Squyres
> > jsquy...@cisco.com
> > For corporate legal information go to:
> http://www.cisco.com/web/about/doing_business/legal/cri/
> >
> > _______________________________________________
> > users mailing list
> > us...@open-mpi.org
> > http://www.open-mpi.org/mailman/listinfo.cgi/users
>
> _______________________________________________
> users mailing list
> us...@open-mpi.org
> http://www.open-mpi.org/mailman/listinfo.cgi/users
>

Reply via email to