I am having some problems using Romio with LAM/MPI. In particular, with
derived datatypes. Attached is a simple example program that does not
work. This works fine with MPICH and Romio, but not LAM/MPI with Romio.
I have tried with 2 different LAM-7.0.4 installations, installed by
different people in different domains. These are both running on Linux
Clusters using Redhat. I did not do either install so I don't have
config output or anything like that.
When I run my simple example I get the following error output:
mpirun -np 2 a.out
[0] About to set view
Error: Unsupported datatype passed to ADIOI_Count_contiguous_blocks
[1] About to set view
Error: Unsupported datatype passed to ADIOI_Count_contiguous_blocks
-----------------------------------------------------------------------------
One of the processes started by mpirun has exited with a nonzero exit
code. This typically indicates that the process finished in error.
If your process did not finish in error, be sure to include a "return
0" or "exit(0)" in your C code before exiting the application.
PID 14977 failed on node n1 (160.36.140.86) with exit status 1.
-----------------------------------------------------------------------------
Note that I get a similar error when using some other (but not all)
derived datatypes as well. As I said, this simple program works fine
with MPICH. It also works fine on an Origin 3800 using the native MPI.
This convinces me there is nothing wrong with the code.
Has anyone experienced a similar situation? Any advice is greatly
appreciated.
Thanks,
Dave Cronk.
--
Dr. David Cronk, Ph.D. phone: (865) 974-3735
Research Leader fax: (865) 974-8296
Innovative Computing Lab
http://www.cs.utk.edu/~cronk
University of Tennessee, Knoxville
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include "mpi.h"
int main(int argc, char **argv)
{
int data[500];
int rank, size;
int sizes[1], subsizes[1], starts[1];
MPI_File fh;
int i;
MPI_Datatype file_type;
MPI_Aint disp;
MPI_Status status;
MPI_Init(&argc, &argv);
MPI_Comm_rank (MPI_COMM_WORLD, &rank);
MPI_Comm_size (MPI_COMM_WORLD, &size);
for (i=1;i < 500; i++)
data[i] = rank;
sizes[0] = 1000;
subsizes[0] = 500;
starts[0] = 500*rank;
MPI_Type_create_subarray (1, sizes, subsizes, starts, MPI_ORDER_C, MPI_INT, &file_type);
MPI_Type_commit (&file_type);
MPI_File_open (MPI_COMM_WORLD, "testdata1", MPI_MODE_WRONLY | MPI_MODE_CREATE,
MPI_INFO_NULL, &fh);
disp = 0;
printf ("[%d] About to set view\n", rank); fflush (stdout);
MPI_File_set_view (fh, disp, MPI_INT, file_type, "native", MPI_INFO_NULL);
printf ("[%d] Done setting view\n", rank); fflush (stdout);
MPI_File_write (fh, data, 500, MPI_INT, &status);
MPI_File_close (&fh);
MPI_Finalize();
}
|