[MPICH] Serial read-in of MPI-2 I/O

Rajeev Thakur thakur at mcs.anl.gov
Thu Sep 20 13:15:06 CDT 2007


Peter,
      If it's the same kind of machine, it should work if you are using
MPICH/ROMIO. ROMIO doesn't add any metadata to the file, so if you are
writing a 100x100 array of doubles, the file will contain exactly that. That
is not true with ordinary Fortran I/O. If you write an array with a Fortran
write statement, Fortran adds some metadata, so the file is a few bytes
larger than the array size. If you read with a Fortran read, it will expect
the file to be in this format. If it was written with MPI-IO, it won't work
because the metadata will be missing. So if your viz expert will read using
just raw binary I/O (as in C, for example), it will work.

Rajeev


> -----Original Message-----
> From: owner-mpich-discuss at mcs.anl.gov 
> [mailto:owner-mpich-discuss at mcs.anl.gov] On Behalf Of Peter Diamessis
> Sent: Tuesday, September 18, 2007 10:46 AM
> To: mpich-discuss at mcs.anl.gov
> Subject: [MPICH] Serial read-in of MPI-2 I/O
> 
> Hi folks,
> 
> I have a naive question regarding MPI-2 I/O so please bear with me.
> I'm working with a local visualization expert who wants to visualize
> some results of my parallel CFD simulations.
> 
> The computational domain is a 3-D box and generated by an MPI-
> based simulation, where the domain has been partitioned according
> to a 1-D domain decomposition. I've generated snapshots (i.e. sample
> fields) of my basic/primitive 3-D variables (velocity vector 
> & density, a scalar)
> that I output at specific times during the simulations using 
> non-contiguous
> MPI-2 parallel I/O . I read in that data through a separate 
> postprocessor
> code to perform any necessary analysis.
> 
> The viz expert would like to read in the data from some of 
> these snapshots serially onto his Linux box.
> Note that the data was generated on a Linux cluster using the 
> 'native' option.
> I've attached the actual F90 source code for the output. As 
> you can see, the
> four 3-D arrays containing the primitive variables are 
> outputted, followed by
> some secondary information on domain size & grid-spacing.
> 
> The "Using MPI-2" book says that files created by 'native' 
> representation 
> are not portable. However, I'm assuming that Linux works with 
> Little Endian
> and thus this MPI-2 generated data can be read serially on 
> another Linux machine ?
> Given that the data is outputted in a contiguous manner, 
> totally analogous to
> the way it's stored in memory, how different is this file 
> from the equivalent binary
> file a serial F90 code would output ? I'm particularly 
> concerned as to whether there
> is any header information preceding each 3-D array block. If 
> not I'm assuming that,
> since my 3-D variables are 4-byte reals, the viz guy can just 
> read through the data
> in 4-byte chunks ?
> 
> Any clarifications would be hugely appreciated.
> 
> Sincerely,
> 
> Peter Diamessis
> 
> 




More information about the mpich-discuss mailing list