Open MPI logo

Open MPI Development Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Development mailing list

Subject: Re: [OMPI devel] Simplified: Misuse or bug with nested types?
From: Jeff Squyres (jsquyres) (jsquyres_at_[hidden])
Date: 2013-04-24 08:16:37


Thanks for identifying that it was the same bug that George recently fixed.

I literally committed that fix to the v1.6 tree earlier this morning. It will therefore be in tonight's 1.6.x nightly tarball, and will be included in 1.6.5.

On Apr 23, 2013, at 9:37 PM, Eric Chamberland <Eric.Chamberland_at_[hidden]> wrote:

> Hi Paul,
>
> okay, I have compiled the sources from the trunk and it works fine now...
>
> Sorry to have reported a duplicate...
>
> It will be in the next 1.6.X release?
>
> Thanks,
>
> Eric
>
> Le 2013-04-23 20:46, Paul Hargrove a écrit :
>> Eric,
>>
>> Are you testing against the Open MPI svn trunk?
>> I ask because on April 9 George commited a fix for the bug reported by Thomas Jahns:
>> http://www.open-mpi.org/community/lists/devel/2013/04/12268.php
>>
>>
>> -Paul
>>
>>
>>
>> On Tue, Apr 23, 2013 at 5:35 PM, Eric Chamberland <Eric.Chamberland_at_[hidden] <mailto:Eric.Chamberland_at_[hidden]>> wrote:
>>
>> Hi Jeff,
>>
>> thanks for your answer!
>>
>> You inserted a doubt in my mind... and gave me hope... :-)
>>
>> So I did some modifications on the code to help everyone:
>>
>> 1- it's now in "C"... :-)
>> 2- Concerning your remark about arbitrary address: I am now using
>> the "offsetof" macro defined in "stddef.h" to compute the offset,
>> or displacement needed to create the datatype
>> 3- I have simplified and reduced (again) the number of lines to
>> reproduce the error...
>>
>> see "nested_bug.c" attached to this mail...
>>
>> Output with openmpi 1.6.3:
>> ----------------------------------------
>> Rank 0 send this:
>> {{1},{{2,3},{4,5}}}
>> Rank 1 received this: {{1},{{2,3},{4199789,15773951}}} *** ERROR ****
>>
>> Expected output (still ok with mpich 3.0.3 and intel mpi 4):
>> ----------------------------------------
>> Rank 0 send this:
>> {{1},{{2,3},{4,5}}}
>> Rank 1 received this: {{1},{{2,3},{4,5}}} OK
>>
>> Thanks!
>>
>> Eric
>>
>>
>> Le 2013-04-23 18:03, Jeff Squyres (jsquyres) a écrit :
>>
>> 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.Chamberland_at_[hidden]
>> <mailto:Eric.Chamberland_at_[hidden]>> 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
>> devel_at_[hidden] <mailto:devel_at_[hidden]>
>> http://www.open-mpi.org/mailman/listinfo.cgi/devel
>>
>> _______________________________________________
>> devel mailing list
>> devel_at_[hidden] <mailto:devel_at_[hidden]>
>> http://www.open-mpi.org/mailman/listinfo.cgi/devel
>>
>>
>>
>>
>> _______________________________________________
>> devel mailing list
>> devel_at_[hidden] <mailto:devel_at_[hidden]>
>> http://www.open-mpi.org/mailman/listinfo.cgi/devel
>>
>>
>>
>>
>> --
>> Paul H. Hargrove PHHargrove_at_[hidden] <mailto:PHHargrove_at_[hidden]>
>> Future Technologies Group
>> Computer and Data Sciences Department Tel: +1-510-495-2352
>> Lawrence Berkeley National Laboratory Fax: +1-510-486-6900
>
> _______________________________________________
> devel mailing list
> devel_at_[hidden]
> http://www.open-mpi.org/mailman/listinfo.cgi/devel

-- 
Jeff Squyres
jsquyres_at_[hidden]
For corporate legal information go to: http://www.cisco.com/web/about/doing_business/legal/cri/