[MPICH] question about MPI-IO Read_all
Rajeev Thakur
thakur at mcs.anl.gov
Wed Apr 25 21:19:37 CDT 2007
2^31 is 2 Gbytes. If you are reading 2 GB per process with a single
Read_all, you are already doing quite well performance-wise. If you want to
read more than that you can create a derived datatype of say 10 contiguous
bytes and pass that as the datatype to Read_all. That would give you 20 GB.
You read even more by using 100 or 1000 instead of 10.
In practice, you might encounter some errors, because the MPI-IO
implementation internally may use some types that are 32-bit, not expecting
anyone to read larger than that with a single call. So try it once, and if
it doesn't work, read in 2GB chunks.
Rajeev
> -----Original Message-----
> From: owner-mpich-discuss at mcs.anl.gov
> [mailto:owner-mpich-discuss at mcs.anl.gov] On Behalf Of Russell
> L. Carter
> Sent: Wednesday, April 25, 2007 6:33 PM
> To: mpich-discuss at mcs.anl.gov
> Subject: [MPICH] question about MPI-IO Read_all
>
> Hi,
> I have a question about the amount of data it is possible to read
> using MPI::Create_hindex with a fundamental type of MPI::BYTE, and
> MPI::File::Read_all.
>
> Following the discussion about irregularly distributed arras beginning
> on p. 78 of "Using MPI-2", I want to read my data by doing this:
>
> double *buf = ...;
> int count, bufsize = ...;
> MPI::Offset offset = ...;
> MPI::File f = MPI::File::Open(...);
> MPI::Datatype filetype(MPI::BYTE);
> filetype.Create_hindexed(count, blocks, displacements);
> f.Set_view(offset, MPI::BYTE, filetype, "native", info_);
> f.Read_all(buf, bufsize, MPI::BYTE);
>
> What I a curious about is the amount of data that can
> be read with Read_all. Since bufsize is an int, then
> that would seem to imply that the maximum Read_all (per node)
> is 2^31. Which in bytes, is not gigantic.
>
> Is there some other technique I can use to increase the amount
> of data I can Read_all at one time? I have different sized
> data interspersed, so I can't offset by a larger fundamental
> type. My arrays are not contiguous in the fortran calling program,
> and are of int and 4 or 8 byte reals. If I use a Create_struct
> to make a filetype that I use to Set_view, doesn't this have
> the same read size limitation? Only now it is for all the
> arrays in the struct. Hopefully I am missing something.
>
> Thanks,
> Russell
>
>
More information about the mpich-discuss
mailing list