[MPICH2 Req #2556] Re: [MPICH] Parallel I/O problems on 64-bit machine (pleasehelp:-( )

William Gropp gropp at mcs.anl.gov
Mon Jun 5 12:33:46 CDT 2006


At 02:15 PM 6/2/2006, Peter Diamessis wrote:
>Hi Rajeev,
>
>Thanks so much for the pointer. I feel quite embarrassed that I didn't 
>notice it
>and I apologize if I took too much of your time. I had foolishly patterned the
>code after the example you have in the MPICH-2 book (figure 3.33). I guess
>this code worked deceptively well on a 32-bit machine to never draw my 
>attention to my mistake.
>So now the code does work perfectly when compiled with either MPICH1 (v1.2.6)
>and MPICH2 (v2.1.0.3) but still has problems with MPICH1 -v1.2.7p1.
>I don't know if this is related to Michael's comment.

Rajeev asked why the Fortran MPI module didn't catch the missing ierr 
argument.  Here's the answer:

The problem is that Fortran (until, I believe, Fortran 2003) has nothing 
like "void *", so you need to provide a prototype for all possible buffer 
types.  Even ignoring the user-defined types and arrays with more than two 
dimensions, this can easily (and did in MPICH1) lead to a Fortran interface 
file that is an order of magnitude larger than libmpich.a !  Other than 
some compiler-specific workaround (which is purely hypothetical; I don't 
know if any system actually provides such a workaround), you can either:

1. ignore the choice parameter routines (like MPI_File_write_all); this is 
what MPICH2 does
2. provide a subset; unfortunately, legitimate programs that use other 
types will fail to compile.  This is what MPICH1 does
3. build a custom interface module based on the contents of the 
file.  There is a tool, MPI-CHECK , 
http://andrew.ait.iastate.edu/HPC/Papers/mpicheck/mpicheck1.htm , that does 
this (however, the link on that page to the software appears to be out of 
date).

Bill


William Gropp
http://www.mcs.anl.gov/~gropp 




More information about the mpich-discuss mailing list