A 'poll_fn' is not one of callback functions set when
MPI_META_REQUEST_CREATE is called. It is posted on a generalized
request just like a handler posted by MPI_POST_HANDLER.
A 'poll_fn' is invoked to DETERMINE if a request has been completed,
while a handler is invoked AFTER a request is completed.
Note that we are dealing with two different kind of requests at the
same time: a generalized request(GR) and an underlying low-level
native request, which may be a I/O request or one of basic MPI
request.
When a handler/notification can be attached to the low-level request,
there is no need for 'poll_fn'. This case includes when the low-level
request is a basic MPI request, on which we can post a handler.
Another case is when the low-level request is an asynchronous I/O
request to the operating system which supports notifications.
A 'poll_fn' is necessary only when the low-level request itself can
not be associated with a handler. Therefore, in this case, a 'poll_fn'
is attached to the GR, instead of the low-level one.
A 'poll_fn' posted on a GR is guaranteed to be called when a TEST/WAIT
is called on the GR. It may be called more often. The frequency is
implementation dependent. Users should be warned about possible
performance degradation caused by posting 'poll_fn'.
I will appreciate any comments.
Koichi Konishi konishi@research.nj.nec.com
NEC Research Institute Office: 609-951-2628
FAX: 609-951-2488