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" <bosi...@eecs.utk.edu>
> Gesendet: 12.12.08 01:35:57
> An: Open MPI Users <us...@open-mpi.org>
> 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
> > 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
> 


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


Reply via email to