patflick / mxx

C++11 Message Passing
http://patflick.github.io/mxx
Apache License 2.0
74 stars 17 forks source link

Added a way to specify if the MPI operation used in global scans is commutative. #23

Closed asrivast28 closed 4 years ago

asrivast28 commented 4 years ago

Problem: There was no way to specify if a custom operation used in global_scan* is noncommutative. Solution: Added a parameter to the global_scan* functions (only the ones that accept a function as a custom operation) for specifying if the operation is commutative.

PS: This is possibly a hacky solution for the problem. In my opinion, a possibly better way to handle this is to add a variation of global_scan* which takes mxx::custom_op as an argument. The user can then create the custom_op for noncommutative operations and provide that as an argument to the global_scan* operations. I think this would be closer to the way MPI interface handles this.

I have gone with the least intrusive solution for now but can implement the aforementioned solution if it seems more sensible.

asrivast28 commented 4 years ago

Added overloads for global_scan* functions as per @patflick review https://github.com/patflick/mxx/pull/23#discussion_r378058173