Hi Thomas,
The message you get comes from the convertor. The convertor is in
charge of packing/unpacking the data. As you add yourself an extra
int to the wire data, the convertor gets confused on the receiver
side, as it gets a message that's not in the expected format.
What you should do in my opinion is to create a new convertor (there
is an mca framework for this) that allocates this extra int for you.
Then, because you will use the same convertor at both ends, you will
be able to unpack correctly what you sent. As a free benefit, you will
be able to use the mpool instead of malloc, which should moderate the
overhead of creating the intermediate buffer.
Aurelien
Le 8 janv. 09 à 05:13, Thomas Ropars a écrit :
Hi,
I submit again this old question because I didn't get any answer
last time.
My problem is the following one:
I try to implement piggyback mechanisms. In fact I want to piggyback
an integer on every message.
To do that, I dynamically create new datatype for each send.
The code I use to do that is described below. This code works fine.
But if the integer I piggyback (named "pigg" in the code) is
allocated using malloc,I still get the good result, but I get the
following kind of message:
../../ompi/datatype/datatype_pack.h:38
Pointer 0xbff25fbc size 4 is outside [0xbff25fbc,0x911300c] for
base ptr (nil) count 1 and data
Datatype 0x9183be8[] size 8 align 4 id 0 length 3 used 2
true_lb -1074634820 true_ub 152121356 (true_extent 1226756176) lb
-1074634820 ub 152121356 (extent 1226756176)
nbElems 2 loops 0 flags 102 (commited )-c-----GD--[---][---]
contain MPI_INT
--C---P-D--[ C ][INT] MPI_INT count 1 disp 0xbff25fbc
(-1074634820) extent 4 (size 4)
--C---P-D--[ C ][INT] MPI_INT count 1 disp 0x9113008
(152121352) extent 4 (size 4)
-------G---[---][---] MPI_END_LOOP prev 2 elements first elem
displacement -1074634820 size of data 8
Optimized description
-cC---P-DB-[ C ][ERR] MPI_INT count 1 disp 0xbff25fbc
(-1074634820) extent 4 (size 4)
-cC---P-DB-[ C ][ERR] MPI_INT count 1 disp 0x9113008
(152121352) extent 4 (size 4)
-------G---[---][---] MPI_END_LOOP prev 2 elements first elem
displacement -1074634820 size of data 8
My question is : what does this message means ? Is there an error in
my code ? and what can I do to avoid this message ?
Regards,
Thomas
Thomas Ropars wrote:
Hi,
I'm currently implementing a mechanism to piggyback information on
messages. On message sending, I dynamically create a new datatype
composed of the original buffer and of the data to piggyback.
For instance, if I want to piggyback an integer on each message, I
use the following code:
int send(void *buf,
size_t count,
struct ompi_datatype_t* datatype,
int dst,
int tag,
mca_pml_base_send_mode_t sendmode,
ompi_communicator_t* comm )
{
MPI_Datatype type[2];
int blocklen[2];
MPI_Aint disp[2];
MPI_Datatype datatype_out;
int piggy=0;
type[0]=datatype;
type[1]=MPI_INT;
blocklen[0]=count;
blocklen[1]=1;
MPI_Address(buf,disp);
MPI_Address(&piggy,disp+1);
MPI_Type_struct(2, blocklen, disp, type, datatype_out);
MPI_Type_commit(datatype_out);
/* then I call the original send function and send my new
datatype */
original_send(MPI_BOTTOM, 1, datatype_out, dst, tag, sendmode,
comm);
}
This code works well. But if the data I want to piggyback is
dynamically allocated. I get this kind of error message:
../../ompi/datatype/datatype_pack.h:40
Pointer 0x823fab0 size 4 is outside [0xbfef8920,0x823fab4] for
base ptr (nil) count 1 and data
Datatype 0x8240b90[] size 8 align 4 id 0 length 3 used 2
true_lb -1074820832 true_ub 136575668 (true_extent 1211396500) lb
-1074820832 ub 136575668 (extent 1211396500)
nbElems 2 loops 0 flags 102 (commited )-c-----GD--[---][---
Despite this message, the function works well too ...
Can someone explain me what this message means ? It seems that in
the first part of the error message, the lower bound and the upper
bound of the datatype are switched, but I don't know why.
Regards.
Thomas Ropars
_______________________________________________
users mailing list
us...@open-mpi.org
http://www.open-mpi.org/mailman/listinfo.cgi/users
_______________________________________________
users mailing list
us...@open-mpi.org
http://www.open-mpi.org/mailman/listinfo.cgi/users