Fork reshape
Compare changes
Implements a fork-reshape
pass in the scheduling language which can be used to coalesce a selection of fork-joins, interchange them into a specified order, and then split them into a specified series of chunks.
Adds a parallel and tiled schedule for matmul that uses fork-reshape
to keep the schedule quite clean.
Also adds tuples to the scheduling language and a new form of let-statements that allow destructing tuples, it's not the nicest (it's not a general pattern handler and will only cause an error if there are too many fields on the left-hand side, not too few, but it's enough to make the code that uses fork-reshape
cleaner).
Includes a few other tweaks I ran into