Open MPI logo

Open MPI User's Mailing List Archives

  |   Home   |   Support   |   FAQ   |  

This web mail archive is frozen.

This page is part of a frozen web archive of this mailing list.

You can still navigate around this archive, but know that no new mails have been added to it since July of 2016.

Click here to be taken to the new web archives of this list; it includes all the mails that are in this frozen archive plus all new mails that have been sent to the list since it was migrated to the new archives.

Subject: Re: [OMPI users] Onesided + derived datatypes
From: Dorian Krause (doriankrause_at_[hidden])
Date: 2008-12-12 07:45:36


Thanks George (and Brian :)).

The MPI_Put error is gone. Did you take a look at the problem
that with the block_indexed type the PUT doesn't work? I'm
still getting the following output (V1 corresponds to the datatype
created with MPI_Type_create_indexed_block while the V2 type
is created with MPI_Type_contiguous, the ordering doesn't care anymore after
your fix) which confuses me
because I remember that (on one machine) MPI_Put with MPI_Type_create_indexed
worked until the invalid datatype error showed up (after a couple of timesteps).

*** -DO1=1 -DV1=1 ***
mem[0] = { 0.0000, 0.0000, 0.0000}
mem[1] = { 0.0000, 0.0000, 0.0000}
mem[2] = { 0.0000, 0.0000, 0.0000}
mem[3] = { 0.0000, 0.0000, 0.0000}
mem[4] = { 0.0000, 0.0000, 0.0000}
mem[5] = { 0.0000, 0.0000, 0.0000}
mem[6] = { 0.0000, 0.0000, 0.0000}
mem[7] = { 0.0000, 0.0000, 0.0000}
mem[8] = { 0.0000, 0.0000, 0.0000}
mem[9] = { 0.0000, 0.0000, 0.0000}
*** -DO1=1 -DV2=1 ***
mem[0] = { 5.0000, 0.0000, 0.0000}
mem[1] = { 0.0000, 0.0000, -1.0000}
mem[2] = { 0.0000, 0.0000, 0.0000}
mem[3] = { 0.0000, 0.0000, 0.0000}
mem[4] = { 0.0000, 0.0000, 0.0000}
mem[5] = { 0.0000, 0.0000, 0.0000}
mem[6] = { 0.0000, 0.0000, 0.0000}
mem[7] = { 0.0000, 0.0000, 0.0000}
mem[8] = { 0.0000, 0.0000, 0.0000}
mem[9] = { 0.0000, 0.0000, 0.0000}
*** -DO2=1 -DV1=1 ***
mem[0] = { 0.0000, 0.0000, 0.0000}
mem[1] = { 0.0000, 0.0000, 0.0000}
mem[2] = { 0.0000, 0.0000, 0.0000}
mem[3] = { 0.0000, 0.0000, 0.0000}
mem[4] = { 0.0000, 0.0000, 0.0000}
mem[5] = { 0.0000, 0.0000, 0.0000}
mem[6] = { 0.0000, 0.0000, 0.0000}
mem[7] = { 0.0000, 0.0000, 0.0000}
mem[8] = { 0.0000, 0.0000, 0.0000}
mem[9] = { 0.0000, 0.0000, 0.0000}
*** -DO2=1 -DV2=1 ***
mem[0] = { 5.0000, 0.0000, 0.0000}
mem[1] = { 0.0000, 0.0000, -1.0000}
mem[2] = { 0.0000, 0.0000, 0.0000}
mem[3] = { 0.0000, 0.0000, 0.0000}
mem[4] = { 0.0000, 0.0000, 0.0000}
mem[5] = { 0.0000, 0.0000, 0.0000}
mem[6] = { 0.0000, 0.0000, 0.0000}
mem[7] = { 0.0000, 0.0000, 0.0000}
mem[8] = { 0.0000, 0.0000, 0.0000}
mem[9] = { 0.0000, 0.0000, 0.0000}

Thanks for your help.

Dorian

> -----Ursprüngliche Nachricht-----
> Von: "George Bosilca" <bosilca_at_[hidden]>
> Gesendet: 12.12.08 01:35:57
> An: Open MPI Users <users_at_[hidden]>
> Betreff: Re: [OMPI users] Onesided + derived datatypes

> Dorian,
>
> You are right, the datatype generated using the block_index function
> is a legal data-type. We wrongly determined some overlapping regions
> in the description [which is illegal based on the MPI standard]. The
> detection of such overlapping regions being a very expensive process
> if we don't want any false positives (such as your datatype), I prefer
> to remove it completely.
>
> To keep it short I just committed a patch (r20120) in the trunk, and
> I'll take care to move it in the 1.3 and the 1.2.9.
>
> Thanks for your help,
> george.
>
> On Dec 10, 2008, at 18:07 , doriankrause wrote:
>
> > Hi List,
> >
> > I have a MPI program which uses one sided communication with derived
> > datatypes (MPI_Type_create_indexed_block). I developed the code with
> > MPICH2 and unfortunately didn't thought about trying it out with
> > OpenMPI. Now that I'm "porting" the Application to OpenMPI I'm facing
> > some problems. On the most machines I get an SIGSEGV in MPI_Win_fence,
> > sometimes an invalid datatype shows up. I ran the program in Valgrind
> > and didn't get anything valuable. Since I can't see a reason for this
> > problem (at least if I understand the standard correctly), I wrote the
> > attached testprogram.
> >
> > Here are my experiences:
> >
> > * If I compile without ONESIDED defined, everything works and V1 and
> > V2
> > give the same results
> > * If I compile with ONESIDED and V2 defined (MPI_Type_contiguous) it
> > works.
> > * ONESIDED + V1 + O2: No errors but obviously nothing is send? (Am I
> > in
> > assuming that V1+O2 and V2 should be equivalent?)
> > * ONESIDED + V1 + O1:
> > [m02:03115] *** An error occurred in MPI_Put
> > [m02:03115] *** on win
> > [m02:03115] *** MPI_ERR_TYPE: invalid datatype
> > [m02:03115] *** MPI_ERRORS_ARE_FATAL (goodbye)
> >
> > I didn't get a segfault as in the "real life example" but if
> > ompitest.cc
> > is correct it means that OpenMPI is buggy when it comes to onesided
> > communication and (some) derived datatypes, so that it is probably not
> > of problem in my code.
> >
> > I'm using OpenMPI-1.2.8 with the newest gcc 4.3.2 but the same
> > behaviour
> > can be be seen with gcc-3.3.1 and intel 10.1.
> >
> > Please correct me if ompitest.cc contains errors. Otherwise I would be
> > glad to hear how I should report these problems to the develepors (if
> > they don't read this).
> >
> > Thanks + best regards
> >
> > Dorian
> >
> >
> >
> >
> > <ompitest.tar.gz>_______________________________________________
> > users mailing list
> > users_at_[hidden]
> > http://www.open-mpi.org/mailman/listinfo.cgi/users
>
> _______________________________________________
> users mailing list
> users_at_[hidden]
> http://www.open-mpi.org/mailman/listinfo.cgi/users
>

____________________________________________________________________
Psssst! Schon vom neuen WEB.DE MultiMessenger gehört?
Der kann`s mit allen: http://www.produkte.web.de/messenger/?did=3123