Sorry for the delay. My C++ is a bit rusty, but this does not seem correct to me.
You're making the datatypes relative to an arbitrary address (&lPtrBase) in a static method on each class. You really need the datatypes to be relative to each instance's *this* pointer. Doing so allows MPI to read/write the data relative to the specific instance of the objects that you're trying to send/receive. Make sense? On Apr 23, 2013, at 5:01 PM, Eric Chamberland <eric.chamberl...@giref.ulaval.ca> wrote: > another information: I just tested the example with Intel MPI 4.0.1.007 and > it works correctly... > > So the problem seems to be only with OpenMPI... which is the default > distribution we use... :-/ > > Is my example code too long? > > Eric > > Le 2013-04-23 09:55, Eric Chamberland a écrit : >> Sorry, >> >> here is the attachment... >> >> Eric >> >> On 04/23/2013 09:54 AM, Eric Chamberland wrote: >>> Hi, >>> >>> I have sent a previous message showing something that I think is a bug >>> (or maybe a misuse, but...). >>> >>> I worked on the example sent to have it simplified: now it is almost >>> half of the lines of code and the structures are more simple... but >>> still showing the wrong behaviour. >>> >>> Briefly, we construct different MPI_datatype and nests them into a final >>> type which is a: >>> {MPI_LONG,{{MPI_LONG,MPI_CHAR}*2} >>> >>> Here is the output from OpenMPI 1.6.3: >>> >>> Rank 0 send this: >>> i: 0 => {{0},{{3,%},{7,5}}} >>> i: 1 => {{1},{{3,%},{7,5}}} >>> i: 2 => {{2},{{3,%},{7,5}}} >>> i: 3 => {{3},{{3,%},{7,5}}} >>> i: 4 => {{4},{{3,%},{7,5}}} >>> i: 5 => {{5},{{3,%},{7,5}}} >>> MPI_Recv returned success and everything in MPI_Status is correct after >>> receive. >>> Rank 1 received this: >>> i: 0 => {{0},{{3,%},{-999,$}}} *** ERROR **** >>> i: 1 => {{1},{{3,%},{-999,$}}} *** ERROR **** >>> i: 2 => {{2},{{3,%},{-999,$}}} *** ERROR **** >>> i: 3 => {{3},{{3,%},{-999,$}}} *** ERROR **** >>> i: 4 => {{4},{{3,%},{-999,$}}} *** ERROR **** >>> i: 5 => {{5},{{3,%},{-999,$}}} *** ERROR **** >>> >>> Here is the expected output, obtained with mpich-3.0.3: >>> >>> Rank 0 send this: >>> i: 0 => {{0},{{3,%},{7,5}}} >>> i: 1 => {{1},{{3,%},{7,5}}} >>> i: 2 => {{2},{{3,%},{7,5}}} >>> i: 3 => {{3},{{3,%},{7,5}}} >>> i: 4 => {{4},{{3,%},{7,5}}} >>> i: 5 => {{5},{{3,%},{7,5}}} >>> MPI_Recv returned success and everything in MPI_Status is correct after >>> receive. >>> Rank 1 received this: >>> i: 0 => {{0},{{3,%},{7,5}}} OK >>> i: 1 => {{1},{{3,%},{7,5}}} OK >>> i: 2 => {{2},{{3,%},{7,5}}} OK >>> i: 3 => {{3},{{3,%},{7,5}}} OK >>> i: 4 => {{4},{{3,%},{7,5}}} OK >>> i: 5 => {{5},{{3,%},{7,5}}} OK >>> >>> Is it related to the bug reported here: >>> http://www.open-mpi.org/community/lists/devel/2013/04/12267.php ? >>> >>> Thanks, >>> >>> Eric >>> >>> >>> _______________________________________________ >>> devel mailing list >>> de...@open-mpi.org >>> http://www.open-mpi.org/mailman/listinfo.cgi/devel >> > > _______________________________________________ > devel mailing list > de...@open-mpi.org > http://www.open-mpi.org/mailman/listinfo.cgi/devel -- Jeff Squyres jsquy...@cisco.com For corporate legal information go to: http://www.cisco.com/web/about/doing_business/legal/cri/