[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