Fri May 17 17:05:06 EDT 2019

Different intermediates

In RAI, all intermediates were local and did not survive to the next
loop.  I remember this being a problem for the FDN implementation.

EDIT: I believe it was the (sparse) matrix multiplication.

I think the central point is to have one loop compute something, and
have another loop use that value.  The problem in RAI is that
multi-pass structures are not supported.

So start with something simple.  Multipass is necessary when there is
some kind of global -> local data dependency.  Anything goes really,
so let's pick vector normalization:

sum squares -> 1/sqrt^2 -> scale

The LTA language cannot yet express accumulators.

   Ai <- A(i-1) + Bi

Can I express something that would need multipass without using
accumulators?  It doesn't seem so.  Accumulation is key.

Some remarks

- Any kind of triangle feedback would be allowed in a first iteration.
  Only the regular ones should be replaced by accumulator variables.

- This "allowable range" idea should be extended to generic grids as
  well: if a grid was computed in a previous loop, it can be used
  entirely.  Otherwise only the local part is accessible.  Keep this
  open and add it once an example pops up.