kamping-site / kamping

KaMPIng: (Near) zero-overhead MPI wrapper for modern C++
https://kamping-site.github.io/kamping/
GNU Lesser General Public License v3.0
27 stars 0 forks source link

Feature/alltoall inplace #626

Closed niklas-uhl closed 7 months ago

niklas-uhl commented 7 months ago

First step towards implementing #28

niklas-uhl commented 7 months ago

Because inplace operations have semantics different from the non-inplace counterparts, it would have made the parameter selection machinery even harder to understand, if we integrated it in the same member function. Therefore I extracted it to alltoall_inplace, which is automatically called from alltoall if a send_recv_buf is passed instead of a send_buf. It looks like using send_recv_* everywhere is less error prone than allowing to pass send_buf(inplace). The one thing I am not sure about is whether resizing makes sense for inplace operations. So let's discuss this draft.

mschimek commented 7 months ago

Do we want the user to be able to directly call alltoall_inplace, from my perspective it would be sufficient to only have alltoall with the send_recv_buf() option?

mschimek commented 7 months ago

MPI-4.0: Data sent and received must have the same type map as specified by recvcount and recvtype

Hence, resizing should never be required?