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.
Problem: There was no way to specify if a custom operation used in
global_scan*
is noncommutative. Solution: Added a parameter to theglobal_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 takesmxx::custom_op
as an argument. The user can then create thecustom_op
for noncommutative operations and provide that as an argument to theglobal_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.