On Oct 1, 2010, at 23:24 , Gijsbert Wiesenekker wrote: > I have a large array that is shared between two processes. One process > updates array elements randomly, the other process reads array elements > randomly. Most of the time these writes and reads do not overlap. > The current version of the code uses Linux shared memory with NSEMS > semaphores. When array element i has to be read or updated semaphore (i % > NSEMS) is used. if NSEMS = 1 the entire array will be locked which leads to > unnecessary waits because reads and writes do not overlap most of the time. > Performance increases as NSEMS increases, and flattens out at NSEMS = 32, at > which point the code runs twice as fast when compared to NSEMS = 1. > I want to change the code to use OpenMPI RMA, but MPI_Win_lock locks the > entire array, which is similar to NSEMS = 1. Is there a way to have more > granular locks? > > Gijsbert >
Also, is there an MPI_Win_lock equavalent for IPC_NOWAIT? Gijsbert