I've added a BroadcastMap distribution type to distarray. This contains the basic implementation so far and I've opened the pull request to invite comment and test the waters.
distarray's basic philosophy is to distribute different sections of an array dimension over distinct processors. As far as I can tell, there is a one-to-one mapping here (with the possible exception of Unstructured Distributions).
A broadcast distribution changes this by broadcasting one array dimension over multiple processes.
I see a number of challenges here:
Breaks the one-to-one mapping paradigm.
Ensuring that local updates on one process propagate to other processes.
Updates the Distributed Array Protocol
I've set up the dim data per rank dictionary to look something like this:
ddpr = {
'dist_type': 'o',
'size': N, # Array of size N
'proc_grid_size': 4, # 4 processors
'proc_grid_rank': 1, # This rank
}
I've added a BroadcastMap distribution type to distarray. This contains the basic implementation so far and I've opened the pull request to invite comment and test the waters.
distarray's basic philosophy is to distribute different sections of an array dimension over distinct processors. As far as I can tell, there is a one-to-one mapping here (with the possible exception of Unstructured Distributions).
A broadcast distribution changes this by broadcasting one array dimension over multiple processes.
I see a number of challenges here:
Distributed Array Protocol
I've set up the dim data per rank dictionary to look something like this:
Any comments? Would this be useful?