Skip to main content

Routing

These topics move data where fixed point-to-point routes are not enough:

  • routing by address, with destinations computed from data;
  • exchanges whose length is known only at run time;
  • stencils with eight neighbours;
  • filters and fan-out for streaming data in and out;
  • one color looped through every PE of a rectangle and back.

Each topic is a complete program, and each opens with the lessons and topics it needs. Read a topic once you have read everything on its Needs line.

TopicWhat it teaches
Message passing: routing by addressMessage-passing banks, the header and its direction bits, X-then-Y routing, and destinations computed from data
Variable-length exchanges and teardownA count and then a payload, empty and full messages, and colors that start closed
Eight neighbours: spiral routing on a budgetDiagonal neighbours through an extra hop, and a program that uses every input queue
Data in and out: filters, fan-out and funnelsCounter and range filters, spreading one stream over many rows and gathering it back
A route through every PE: a closed loop on one colorA loop built from one-position turns, layouts with x and y swapped, a sender that ring switches between sending and receiving, and the cost of a lap