[MPICH] order of one-sided communication

Hu Zhan zhan at physics.ucdavis.edu
Wed Feb 21 19:21:38 CST 2007


Hi,

I'm wondering if it's guaranteed that the following MPI_Get will access
the target before MPI_Accumulate updates the same target (which appears
to be so on my cluster)

  ...
  int l, one = 1;
  MPI_Win_lock(MPI_LOCK_EXCLUSIVE, 0, 0, win);
  MPI_Get(&l, 1, MPI_INT, 0, 0, 1, MPI_INT, win);
  MPI_Accumulate(&one, 1, MPI_INT, 0, 0, 1, MPI_INT, MPI_SUM, win);
  MPI_Win_unlock(0, win);
  ...

The MPICH2 standard seems to suggest that the order will not be
deterministic. If so, is there a way to ensure the order without
bracketing each function in a pair of MPI_Win_lock & MPI_Win_unlock
(because I don't want other processes to access and/or update the
target before a process finishes accessing and updating the same
target)?

Thanks!

Hu




More information about the mpich-discuss mailing list