Hi,
I’ve been trying to implement code using MPI_Get and MPI_Put that move around data using MPI_Datatypes. If I create the data type using MPI_Type_create_subarray, everything works fine. If I create the data type using MPI_Type_create_struct
then I get a failure if the amount of data I’m moving around becomes large. At the moment the crossover point is moving a total of a million doubles on 8 cores (125000 doubles per core), which doesn’t seem to be excessively large. The error I’m seeing on
a Linux cluster using and Infiniband interconnect is
Assertion failed in file ./src/mpid/ch3/channels/nemesis/include/mpid_nem_inline.h at line 406
: MPID_NEM_MPICH_DATA_LEN - buf_offset >= ext_hdr_sz
internal ABORT - process 1
Note that the same code runs fine if the data type is created using the subarray call. It looks like some internal limit is being exceeded, but if so, I think the threshold may be set a bit on the low side. Does anyone know more about this?
Bruce Palmer