Skip to content
Gijs Molenaar edited this page Feb 13, 2014 · 3 revisions

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.

Clone this wiki locally