Dries Kimpe wrote:
>
>
> The problem is that the OpenMPI group takes ROMIO as-is from an older
> release. Then they pass
> MPI_COMBINER_SUBARRAY as-is to ROMIO, which in that release it does not
> understand. Then ROMIO blows up.
>
>
> I'll try recompiling Open MPI with a newer version of ROMIO.
>
Found the problem;
mca/io/romio/romio/adio/common/flatten.c contains conditional code for
MPI implementations not supporting COMBINER_SUBARRAY, COMBINER_DARRAY
and COMBINER_DUP.
OpenMPI supports these, but fails to #define the necessary symbols:
MPIIMPL_HAVE_MPI_COMBINER_DARRAY
MPIIMPL_HAVE_MPI_COMBINER_SUBARRAY
MPIIMPL_HAVE_MPI_COMBINER_DUP
Because of this, ROMIO excludes support for these datatype constructors.
Solution:
remove the #ifdef/#endif in flatten.c or #define the correct symbols.
I verified that this solves the problem. (pnetcdf tests work now).
Atteched patch removes the conditional code.
Greetings,
Dries
Index: flatten.c
===
--- flatten.c (revision 9836)
+++ flatten.c (working copy)
@@ -116,7 +116,6 @@
MPI_Type_get_contents(datatype, nints, nadds, ntypes, ints, adds, types);
switch (combiner) {
-#ifdef MPIIMPL_HAVE_MPI_COMBINER_DUP
case MPI_COMBINER_DUP:
MPI_Type_get_envelope(types[0], &old_nints, &old_nadds,
&old_ntypes, &old_combiner);
@@ -124,8 +123,6 @@
if ((old_combiner != MPI_COMBINER_NAMED) && (!old_is_contig))
ADIOI_Flatten(types[0], flat, st_offset, curr_index);
break;
-#endif
-#ifdef MPIIMPL_HAVE_MPI_COMBINER_SUBARRAY
case MPI_COMBINER_SUBARRAY:
{
int dims = ints[0];
@@ -142,8 +139,6 @@
MPI_Type_free(&stype);
}
break;
-#endif
-#ifdef MPIIMPL_HAVE_MPI_COMBINER_DARRAY
case MPI_COMBINER_DARRAY:
{
int dims = ints[2];
@@ -163,7 +158,6 @@
MPI_Type_free(&dtype);
}
break;
-#endif
case MPI_COMBINER_CONTIGUOUS:
top_count = ints[0];
MPI_Type_get_envelope(types[0], &old_nints, &old_nadds,
@@ -523,7 +517,6 @@
MPI_Type_get_contents(datatype, nints, nadds, ntypes, ints, adds, types);
switch (combiner) {
-#ifdef MPIIMPL_HAVE_MPI_COMBINER_DUP
case MPI_COMBINER_DUP:
MPI_Type_get_envelope(types[0], &old_nints, &old_nadds,
&old_ntypes, &old_combiner);
@@ -535,8 +528,6 @@
(*curr_index)++;
}
break;
-#endif
-#ifdef MPIIMPL_HAVE_MPI_COMBINER_SUBARRAY
case MPI_COMBINER_SUBARRAY:
{
int dims = ints[0];
@@ -557,8 +548,6 @@
}
break;
-#endif
-#ifdef MPIIMPL_HAVE_MPI_COMBINER_DARRAY
case MPI_COMBINER_DARRAY:
{
int dims = ints[2];
@@ -581,7 +570,6 @@
MPI_Type_free(&dtype);
}
break;
-#endif
case MPI_COMBINER_CONTIGUOUS:
top_count = ints[0];
MPI_Type_get_envelope(types[0], &old_nints, &old_nadds,
___
users mailing list
us...@open-mpi.org
http://www.open-mpi.org/mailman/listinfo.cgi/users