Hi all,
I have a well working (large) code which is using openmpi 1.6.3 (see
config.log here:
http://www.giref.ulaval.ca/~ericc/bug_openmpi/config.log_nodebug)
(I have used it for reading with MPI I/O with success over 1500 procs
with very large files)
However, when I use openmpi compiled with "debug" options:
./configure --enable-mem-debug --enable-mem-profile --enable-memchecker
--with-mpi-param-check --enable-debug --prefix=/opt/openmpi-1.6.3_debug
(se other config.log here:
http://www.giref.ulaval.ca/~ericc/bug_openmpi/config.log_debug) the code
is aborting with an assertion on a very small example on 2 processors.
(the same very small example is working well without the debug mode)
Here is the assertion causing an abort:
===================================
openmpi-1.6.3/opal/datatype/opal_datatype.h:
static inline int32_t
opal_datatype_is_contiguous_memory_layout( const opal_datatype_t*
datatype, int32_t count )
{
if( !(datatype->flags & OPAL_DATATYPE_FLAG_CONTIGUOUS) ) return 0;
if( (count == 1) || (datatype->flags & OPAL_DATATYPE_FLAG_NO_GAPS)
) return 1;
/* This is the assertion: */
assert( (OPAL_PTRDIFF_TYPE)datatype->size != (datatype->ub -
datatype->lb) );
return 0;
}
===================================
Does anyone can tell me what does this mean?
It happens while writing a file with MPI I/O when I am calling for the
fourth time a "MPI_File_set_view"... with different types of
MPI_Datatype created with "MPI_Type_indexed".
I am trying to reproduce the bug with a very small example to be send
here, but if anyone has a hint to give me...
(I would like: this assert is not good! just ignore it ;-) )
Thanks,
Eric