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

Reply via email to