pmodels / casper

Process-based Asynchronous Progress Model for MPI Communication
https://pmodels.github.io/casper-www/
Other
9 stars 4 forks source link

Allow non-contiguous option for MPI_Win_allocate #39

Open AtlantaPepsi opened 3 years ago

AtlantaPepsi commented 3 years ago

This is a draft PR, work in progress to address known Issues #2 in README:

alloc_shared_noncontig option is forced to be true for shared window at the moment, to enable non-contiguous memory some additional operations/functionalities would be necessary.

Most obviously, the offset from target user to ghost base needs to be recalculated. Aside from the existing approach (of accumulating window sizes of all ghosts+users in front of calling process), I'm adding a new calculation, using MPI_shared_query from ghost processes to query users' base address (local to ghost) in shared window, then send offset = usr_addr-ghost_base back to users in middle of alloc_shared_window function.

But the subsequent window creation and RMA wrapper will be further complicated, too. Few months ago when I was first looking at this issue, I recall there were some difficulties when I was looking at CSPU_target_get_ghost protocols, as well as some critical conflicts with Window flavor requirement. I can't remember the specific details (which is problematic) and have to start over to review the code.

For this reason this draft PR will also serve as a personal log, lest I forget my previous efforts wherever I left them due to my unpredictable schedule :S

minsii commented 3 years ago

@AtlantaPepsi I plan to make a production release for Casper. It will be great if this PR can be included. Can you please update if the code is ready to review?

AtlantaPepsi commented 3 years ago

Hi @minsii , to be honest I haven't gotten time to work on Casper code for a while. I have more time recently, but there's quite a few things I haven't fixed/figured out yet AFAIK... When do you plan to make the release?

minsii commented 3 years ago

I am targeting by end of May. But it is flexible.