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

Reply via email to