- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
lately I'm wondering if your implementation of the passive target communication was ever really ment for usage...
Despite the fact that it isn't really passive (since one has to call some mpi functions on the target to get the mpi_win_unlock ever to return), I couldn't even figure out which mpi functions exactly must/can be invoked to achieve the flushing. In the release notes is only written:
The following MPI-2.2 features are not supported by the Intel(R) MPI Library:
o Passive target one-sided communication when the target process does not call any MPI functions
By now I've tested several 'MPI functions', but the only one that seems to work is a blocking MPI_RECV (and only then if the recv has to wait for the message). - Thats very unsatisfactory
So my question: exist there at least some special functions that I can use for polling the rma window? I know this isn't foreseen of the mpi standard as less as your kind of implementation is, but it would render the whole thing a bit more usefull then it is by now...
Thanks for help!
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello,
The following options are available:
1) Try to enable asynchronous progress by setting MPICH_ASYNC_PROGRESS environment variable to 1. This will lead to additional overhead (especially noticeable with rather small message exchanges), but will force target side to poll rma window constantly.
2) MPI_Iprobe may be used to ensure message progression on the target side. The code like “MPI_Iprobe(MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_COMM_WORLD, &flag, MPI_STATUS_IGNORE);” should do the trick. It may be repeated a bunch of times in a cycle depending on application needs.
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello,
The following options are available:
1) Try to enable asynchronous progress by setting MPICH_ASYNC_PROGRESS environment variable to 1. This will lead to additional overhead (especially noticeable with rather small message exchanges), but will force target side to poll rma window constantly.
2) MPI_Iprobe may be used to ensure message progression on the target side. The code like “MPI_Iprobe(MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_COMM_WORLD, &flag, MPI_STATUS_IGNORE);” should do the trick. It may be repeated a bunch of times in a cycle depending on application needs.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Quite significant performance penalties are expected when MPICH_ASYNC_PROGRESS is enabled. Thus, it might be more performance efficient to use MPI_Recv for progression as you did originally.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Wel, I get the same issue when using MPI_Recv (I'm actually using a second thread to do this, so I'm using the MPI_THREAD_MULTIPLE level)
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
The latest MPI-3 standard contains major extensions and improvements to the Remote Memory Access (RMA). The Intel® MPI Library version 5.0 and above fully supports MPI-3 standard. The “New RMA Interface” chapter in
http://goparallel.sourceforge.net/wp-content/uploads/2014/07/PUM18_Mastering_Performance_with_MPI3.pdf
describes support for the real passive target mode. What changed since this publication is that now multi-threaded version of the Intel® MPI library is a default.
You can also look at this presentation https://software.intel.com/en-us/videos/intel-mpi-library-implementation-of-a-new-mpi30-standard-new-features-and-performance (slides and video)
I would also recommend to download Intel® MPI Benchmarks source code from this URL
https://software.intel.com/en-us/articles/intel-mpi-benchmarks
containing new IMB-RMA benchmarks that use passive target communication. For example, please take a look at how IMB_rma_passive_put function is implemented (in file IMB_rma_put.c).

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page