26
Compiling ZPL Programs
•ZPL uses a “single program, multiple data” (SPMD) view Þ compiler produces 1 program
•Logically, ZPL executes 1 statement at a time, but processors go at their own rate using “data synchronization”
–
• for i := 1 to n do
•   [1..m,*]  Col := >>[ ,k] A; -- Flood kth col of A
•   [*,1..p]  Row := >>[k, ] B; -- Flood kth row of B
•[1..m,1..p]    C += Col*Row;   -- Combine elements
• end;
•
•
bdcst col;
bdcst row;
compute;
bdcst col;
recv row;
compute;
recv col;
recv row;
compute;
recv col;
bdcst row;
compute;