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? 2) How is RMA progress achieved for IB? Is there a progress thread option available? 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() Thank you for your help, Sebastian _______________________________________________ users mailing list users@lists.open-mpi.org https://rfd.newmexicoconsortium.org/mailman/listinfo/users