# [Beowulf] failing forward and learning

Lux, Jim (337C) james.p.lux at jpl.nasa.gov
Sun May 12 08:04:07 PDT 2013

```In the context of "setups for teaching networks and clusters"..

If you wanted to experiment with various interconnects and topologies, what is the minimum number of nodes and "ports" on each node.
For instance, if each node has 2 ports, you're constrained to lines and rings. 3 ports gets you a hypercube with 8 nodes, etc.

That's if links are "point to point" and no "switch/bus" interconnects.

Say you wanted to do a "fabric" like the surface of a toroid.  That implies a 2 D connection, either with 3 or 4 ports (depending on whether you are using triangles or squares).  How many to be useful: 16 gives you a 4x4 square grid, which could be connected as a torus.  9 gives you 3x3.

And then, there's some interesting problems..

Say your problem is "invert an N by N matrix".. An Arduino only has 2kbytes of RAM, so that sets one bound.  If you had 9 nodes in a line and you put the matrix to be inverted into a node at the end of the line, you need to figure out how to send pieces down the line (and the farther you go, the more "hops" and comm overhead). Or you could do some sort of systolic/pipeline, and do it in stages.
(for instance, doing a 128 point FFT.. You do the butterflies with stride 2, then pass the outputs to the next node which does them in stride 4, etc. with all sorts of opportunities to efficiently arrange the algorithm and do some overlap.

Then, you allow the pile o' nodes to be rearranged.. How does making it a ring change the algorithm? Or a 2D mesh? Can you design an algorithm which can work with either? Can you do it so it is adaptive, and "discovers" the connectivity.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.beowulf.org/pipermail/beowulf/attachments/20130512/2c3f5dd2/attachment.html>
```