It was mentioned that a mesh network has natural applications, for example, in the grid solver, where each point only has a dependence on adjacent points. How would you take advantage of this as a programmer, so that threads for adjacent points are in fact assigned to adjacent processors? Would this be something that would need to be done at an operating system level?
@jrgallag Not necessarily. You can use processor affinity to give hints to the OS on which cores to run a particular thread. If you set these correctly and know in detail how the layout of the 2d mesh, you can suggest to the os that threads which must communicate be placed on adjacent cores.
It is also mentioned in class that by this topology the nodes at the center are inherently more likely to have lower latency when communicating with other nodes. And this can be resolved by connecting nodes on opposite sides of edge to create a "sphere mesh".
@CC. And by "Sphere mesh", I believe you mean a torus.
The cost is O(N) because each node has at most 4 links. Am I right?
I think the cost is O(N) because there is one switch per node.
We previously listed the disadvantages of using different interconnecting methods. What would be some disadvantages of using the mesh?
@chuangxuean, one main disadvantage I can think of would be the latency, which while better than a ring is not as good as a crossbar or bus. Another disadvantage would be broadcast messages, which will take multiple hops and involve every switch in the network.
Is the bisection bandwidth also O(sqrt(N))?
@randomized Yes I think so. If you cut the network into halves, you get O(sqrt(N)) links.