On Jul 19, 2007, at 3:24 PM, Moreland, Kenneth wrote:

I've run into a problem with the File I/O with openmpi version 1.2.3.
It is not possible to call MPI_File_set_view with a datatype created
from a subarray.  Instead of letting me set a view of this type, it
gives an invalid datatype error. I have attached a simple program that
demonstrates the problem.  In particular, the following sequence of
function calls should be supported, but they are not.

  MPI_Type_create_subarray(3, sizes, subsizes, starts,
                           MPI_ORDER_FORTRAN, MPI_BYTE, &view);
  MPI_File_set_view(fd, 20, MPI_BYTE, view, "native", MPI_INFO_NULL);

After poking around in the source code a bit, I discovered that the I/O implementation actually supports the subarray data type, but there is a
check that is issuing an error before the underlying I/O layer (ROMIO)
has a chance to handle the request.

You need to commit the datatype after calling MPI_Type_create_subarray. If you add:

  MPI_Type_commit(&view);

after the Type_create, but before File_set_view, the code will run to completion.

Well, the code will then complain about a Barrier after MPI_Finalize due to an error in how we shut down when there are files that have been opened but not closed (you should also add a call to MPI_File_close after the set_view, but I'm assuming it's not there because this is a test code). This is something we need to fix, but also signifies a user error.


Brian

--
  Brian W. Barrett
  Networking Team, CCS-1
  Los Alamos National Laboratory


Reply via email to