There was a bug in the MPI_MODE_NOCHECK path in osc/sm. It has been fixed on master and a fix has been CMRed to 1.8. Thank you for reporting this.
In the meantime you can remove MPI_MODE_NOCHECK and it should work fine. -Nathan On Thu, Feb 12, 2015 at 11:10:59PM +0100, Thibaud Kloczko wrote: > Hi all, > Here is my problem (see attached file for more details). > I create a window using MPI_Win_allocate_shared. > The rank 0 is then in charge to fill iteratively the shared buffers using > the MPI_Put function. > At each iteration, I use also MPI_Lock and MPI_Unlock function as follows: > MPI_Win_lock(MPI_LOCK_EXCLUSIVE, rank, MPI_MODE_NOCHECK, win); > MPI_Put(&i, buffer_size, MPI_BYTE, rank, position, buffer_size, MPI_BYTE, > win); > MPI_Win_unlock(wid, win); > Surprisingly, at the second iteration, I get the following error: > Open MPI v1.8.4, package: Open MPI Distribution, ident: 1.8.4, repo rev: > v1.8.3-330-g0344f04, Dec 19, 2014 > *** An error occurred in MPI_Win_lock > *** reported by process [140394923687937,140393890971648] > *** on win > *** MPI_ERR_RMA_SYNC: error executing rma sync > *** MPI_ERRORS_ARE_FATAL (processes in this win will now abort, > *** and potentially your MPI job) > I observed the same behaviour when allocating the window using > MPI_Win_allocate function. > On the other hand, everything works well with MPI_Win_Create. > Am I wrong somewhere, any idea would be great :-) ! > Cheers, > Thibaud Kloczko. > ------------------------------------------------- > Ingenieur d'Experimentation et de Developpement > Inria CRISAM > 2004, route des lucioles > 06902 Sophia Antipolis > +33 4 92 38 50 03 > // Version: $Id$ > // > // > > // Commentary: > // > // > > // Change Log: > // > // > > // Code: > > #include "mpi.h" > #include <iostream> > > int main(int argc, char **argv) > { > MPI_Init(&argc, &argv); > > int cap = 101; > int objectSize = sizeof(int); > int buffer_size = cap * objectSize; > int *array = NULL; > > MPI_Win win; > > MPI_Win_allocate_shared(buffer_size, objectSize, MPI_INFO_NULL, > MPI_COMM_WORLD, &array, &win); > > int size; > MPI_Comm_size(MPI_COMM_WORLD, &size); > int rank; > MPI_Comm_rank(MPI_COMM_WORLD, &rank); > > MPI_Barrier(MPI_COMM_WORLD); > if (rank == 0) { > > char version[MPI_MAX_LIBRARY_VERSION_STRING]; > int len; > MPI_Get_library_version(version, &len); > std::cout << version << std::endl; > > for (int i = 0; i < cap * size; ++i) { > int wid = i / cap; > std::cout << std::endl; > std::cout << "iteration " << i << " locking window" << std::endl; > MPI_Win_lock(MPI_LOCK_EXCLUSIVE, wid, MPI_MODE_NOCHECK, win); > MPI_Put(&i, buffer_size, MPI_BYTE, wid, i%size, buffer_size, > MPI_BYTE, win); > std::cout << "unlocking " << std::endl; > MPI_Win_unlock(wid, win); > } > } > MPI_Finalize(); > > return 0; > } > > // > // main.cpp ends here > _______________________________________________ > users mailing list > us...@open-mpi.org > Subscription: http://www.open-mpi.org/mailman/listinfo.cgi/users > Link to this post: > http://www.open-mpi.org/community/lists/users/2015/02/26321.php
pgpcuhcYbv1UU.pgp
Description: PGP signature