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.
| Topic | What it teaches |
|---|---|
| Message passing: routing by address | Message-passing banks, the header and its direction bits, X-then-Y routing, and destinations computed from data |
| Variable-length exchanges and teardown | A count and then a payload, empty and full messages, and colors that start closed |
| Eight neighbours: spiral routing on a budget | Diagonal neighbours through an extra hop, and a program that uses every input queue |
| Data in and out: filters, fan-out and funnels | Counter and range filters, spreading one stream over many rows and gathering it back |
| A route through every PE: a closed loop on one color | A 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 |