Rob,

Thanks for the clarification.  I had seen that point about
non-decreasing offsets in the standard and it was just beginning to dawn
on me that maybe it was my problem.  I will rethink my mapping strategy
to comply with the restriction.  Thanks again.

T. Rosmond


On Tue, 2011-05-24 at 10:09 -0500, Rob Latham wrote:
> On Fri, May 20, 2011 at 08:14:07AM -0400, Jeff Squyres wrote:
> > On May 20, 2011, at 6:23 AM, Jeff Squyres wrote:
> > 
> > > Shouldn't ijlena and ijdisp be 1D arrays, not 2D arrays?
> > 
> > Ok, if I convert ijlena and ijdisp to 1D arrays, I don't get the compile 
> > error (even though they're allocatable -- so allocate was a red herring, 
> > sorry).  That's all that "use mpi" is complaining about -- that the 
> > function signatures didn't match.
> > 
> > use mpi is your friend -- even if you don't use F90 constructs much.  
> > Compile-time checking is Very Good Thing (you were effectively "getting 
> > lucky" by passing in the 2D arrays, I think).
> > 
> > Attached is my final version.  And with this version, I see the hang when 
> > running it with the "T" parameter.
> > 
> > That being said, I'm not an expert on the MPI IO stuff -- your code *looks* 
> > right to me, but I could be missing something subtle in the interpretation 
> > of MPI_FILE_SET_VIEW.  I tried running your code with MPICH 1.3.2p1 and it 
> > also hung.
> > 
> > Rob (ROMIO guy) -- can you comment this code?  Is it correct?
> 
> There's a kind of obscure but important rule in MPI-IO: the file view
> must describe monotonically non-decreasing offsets. 
> 
> the T type creates a file type with the following flattened
> representation (you can kind of think of the flattened representation
> as a type map, except everything is in terms of bytes):
> 
> (0, 32), (96, 32), (32, 64)
> 
> So, 32 bytes at offset 0, 32 bytes at offset 96 and 64 bytes at offset
> 32. 
> 
> That sort of looks like this:
> |xxxx~~~~~~~~~~~~zzzz~~~~yyyy|
> 
> But you need the zzzz and yyyy pieces to be swapped in file view.
> 
> It's an annoying part of the standard but as you can see if you
> violate that ROMIO will go off and spin in an infinite loop looking
> for the next piece of I/O (which in this case was "behind" the current
> piece).
> 
> You can work around this by adjusting your memory datatype: data must
> be read off of the disk in this monotonically non-decreasing order but
> it can be jammed into memory any which way you want.
> 
> ROMIO should be better about reporting file views that violate this
> part of the standard.  We report it in a few places but clearly not
> enough. 
> 
> ==rob
> 

Reply via email to