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