Jan,

You can use MPI_Type_match_size (
https://www.open-mpi.org/doc/v2.0/man3/MPI_Type_match_size.3.php) to find
the MPI type that meets certain requirements.

  George.



On Wed, Dec 21, 2016 at 3:16 AM, 🐋 Jan Hegewald <jan.hegew...@awi.de>
wrote:

> Hi Jeff et al,
>
> > On 20 Dec 2016, at 20:23, Jeff Squyres (jsquyres) <jsquy...@cisco.com>
> wrote:
> >
> > Fair enough.
> >
> > But be aware that if you are building MPICH with double-width Fortran
> types and single-width C types, you might want to verify that MPICH is
> actually working properly.
>
> yes. This episode certainly did bring the possible side effects of the
> "-fdefault-real-8" on my list. But for now I just want this Wtime to work (:
>
> >
> > Open MPI is refusing to configure because for each Fortran type X, it
> looks for a corresponding C type Y.  If it can't find a correspondence,
> then it fails/aborts configure (i.e., it lets a human figure it out --
> usually by ensuring that there are equivalent flags for the C/C++ and
> Fortran compilers).  At least in Open MPI, having a C/Fortran type
> equivalence is necessary for reduction operations (because we do them in
> C).  I don't know if MPICH has this restriction or not.
> >
> > In your case, Open MPI is failing to find a basic (single-width) C type
> that corresponds to the (double-width) Fortran type COMPLEX.  This may not
> matter for your specific application, but we tend to take an all-or-nothing
> approach to configuration/building (i.e., we won't knowingly build a
> half-functional Open MPI).
> >
> > I hope that our rationale for this design choice at least makes sense.
> >
> > Also, if you are compiling your application with double-width Fortran
> types but are compiling your application with single-width Fortran types
> (this is how the thread started), that's quite dangerous -- your MPI
> doesn't agree with your application on the size of Fortran types, and all
> types of unpredictable hilarity can/will ensure.
>
> Yes, this may lead to trouble. I am glad I found this -fdefault-real-8 in
> our setup!
>
> >
> > That's exactly why you were getting a 0 from MPI_WTIME() in Open MPI --
> Open MPI was returning an 8 byte DOUBLE PRECISION, but your application was
> looking for a 16 byte DOUBLE PRECISION.
> >
> > I can't tell from your replies, but I'm guessing you compiled MPICH with
> double-width Fortran types and single-width C types.  In this case, you
> should get correct values back from MPI_WTIME (because both MPI and your
> application use 16-byte DOUBLE PRECISIONS).  What is an open question is
> how MPICH treats reductions on Fortran types (i.e., whether they are done
> in C or Fortran), and/or whether it matters for your application.
>
> I installed the default homebrew mpich. Most HPC systems use a vendor
> tweaked MPI anyway. How can I always be sure of the floating point widths
> it has been compiled with?
>
> Cheers,
> Jan Hegewald
>
> _______________________________________________
> devel mailing list
> devel@lists.open-mpi.org
> https://rfd.newmexicoconsortium.org/mailman/listinfo/devel
>
_______________________________________________
devel mailing list
devel@lists.open-mpi.org
https://rfd.newmexicoconsortium.org/mailman/listinfo/devel

Reply via email to