Setting default algorithm to discover the communication graph #213
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The current default algorithm to discover non-symmetric communication graphs is based on a gather-scatter algorithm. This works great for small communicators, but becomes prohibitive for large problems. The other available algorithm works great, and greatly reduces the amount of memory needed on the master processor.
Although there is technically a way to choose which algorithm you are using, it is extremely tedious and you have to go very low-level to actually be able to change it.
The option I've been using is to overwrite the
default_find_rcv_ids
function on my packages, but this breaks precompilation and is nothing more than a hack.Due to this, I propose adding a compile-time preference through the Julia-standard Preferences.jl package. This changes the default behaviour of PartitionedArrays and sets the other algorithm as default.
The changes have zero impact on performance, since everything is done at compile time by using @static if-else statements.
Let me know what you think @fverdugo