Thank you very much for the quick response! Do I need to configure with certain flags to enable the hardware put/get support?
Sebastian On 03 Apr 2017, at 18:02, Nathan Hjelm <hje...@me.com> wrote: > > > On Apr 03, 2017, at 08:36 AM, Sebastian Rinke <ri...@cs.tu-darmstadt.de> > wrote: > >> Dear all, >> >> I’m using passive target sync. in my code and would like to >> know how well it is supported in Open MPI. >> >> In particular, the code is some sort of particle tree code that uses a >> distributed tree and every rank >> gets non-local tree nodes that are needed for its own computation from other >> ranks >> on demand, i.e.: >> >> Win_lock(target) >> >> Get() >> Get() >> … >> Get() >> >> (up to 8 Gets) >> >> Win_unlock(target) >> >> After closing the access epoch with Win_unlock(target), >> the rank looks at the nodes that it got and decides if it needs to get >> more non-local nodes in the same fashion. >> >> Unfortunately, this implementation blocks until the access epoch is >> completed for one particle. >> As every rank needs to do the same for several particles, it would be better >> to use Rget and start processing other particles in the meantime already. >> From time to time the pending Rgets are then checked for completion and >> the corresponding particle can progress. >> >> My questions are: >> >> 1) Does Get and Rget use network hardware support on Infiniband (IB) for >> contiguous data? > > > In Open MPI v2.0.0 and newer only. Open MPI v1.10.x and older will always use > the two-sided implementation which may or may not use the hardware put/get > support. > >> >> >> 2) How is RMA progress achieved for IB? Is there a progress thread option >> available? > > > Progress threads are generally not needed for progressing RMA with Open MPI > v2.0.0+. The only exception is when we have to queue up the operation (which > may be the case with get). You can get origin-side progress by making another > RMA call or by waiting on an operation initiated with on of the request-based > calls. > > If you want to progress each get independently you should use Rget. > >> >> >> 3) If there is no progress thread option, would it be useful to use >> MPI_THREAD_MULTIPLE >> and have a pthread testing on a request that will not be satisfied? >> Would this be a reasonable option to ensure progress in MPI? >> >> E.g.: >> while (1) >> MPI_Test() > > > This will get you progress but isn't possible with Open MPI v1.10.x and > older. MPI_THREAD_MULTIPLE is only really supported from v2.0.0. > > > -Nathan > _______________________________________________ > users mailing list > users@lists.open-mpi.org > https://rfd.newmexicoconsortium.org/mailman/listinfo/users _______________________________________________ users mailing list users@lists.open-mpi.org https://rfd.newmexicoconsortium.org/mailman/listinfo/users