-
Notifications
You must be signed in to change notification settings - Fork 2
ClusteringIssues
Trees have to be distributed among cluster nodes "statically", prior to executing a node. (Dynamically would be even better, but that's far too complicated for now). However:
-
Optimal clustering depends on set of solvables (may be different for different solve jobs)
-
So it's too limiting to fix it at creation time.
-
So we need to be able to re-configure a given tree in between requests, thus moving tree nodes between machines.
-
This is easy enough to implement: toBlock/fromBlock/reinit, and locally replace it with an MPI stub.
-
How to specify: only specify cluster locations for a few intermediate nodes. Then, resolve as follows:
-
Say the root node is at machine A. Start at root node, recurse into all children and assign them to machine A, until we hit one with machine B specified. The entire subtree rooted at that node is then recursively assigned to B, until we hit a different specification again. In this way the entire tree may be segmented among machines in the cluster, with only the key "crossover" nodes specified.