Deadline: October 19th 2007.
Short version: We need one additional field in the ompi_request_t struct which contain a callback to be called when a request complete. This callback is not intended for the PML layer, but for any other component inside Open MPI. It will provide them a event based progress (based on requests completion).
Long version: During the Open MPI meeting in Paris, we talked about revamping the progress engine. It's not a complete rewrite, it's more related to performance improvement and supporting a blocking mode. In order to be able to reach our goal, we need to get rid of all progress functions that are not related to the BTL/MTL. Therefore, we propose another mechanism for progressing components inside Open MPI, based on the completion event for requests. ROMIO and OSC can use it without problems, instead of the progress function they use today (we talked with Brian about this and he agreed).
This RFC is not about the progress engine, it's about the modifications we need in order to allow any component to have a event based progress. This affect only the ompi_request_t structure, and add one if in the critical path (cost minimal). The base request will have one more field, which contain a callback for completion. This callback, if not NULL, will be called every time the PML complete a request. However, the PML is not allowed to add it's own completion callback (it should use instead the req_free callback as it does today). As stated in the "short version", the new completion callback is only intended for non-devices layers such as OSC and IO.
george.
smime.p7s
Description: S/MIME cryptographic signature