filament icon indicating copy to clipboard operation
filament copied to clipboard

Partial Streaming FFTs

Open UnsignedByte opened this issue 1 year ago • 3 comments

I will be implementing partial streaming the same way spiral does: Instantiating a set number of stages and reusing them (I.E. a 4 stage FFT using 1 stage total). In this way the latency will be NStages/NInstantiated where NInstantiated is the number of actual butterfly units.

If time permits, I might look into partial streaming FFTs using iterative stages but I'm not sure whether that would be worth it, depends on what design space results we can get.

  • [ ] Partial Streaming FFT
  • [ ] Iterative Stages in partial streaming (?)

UnsignedByte avatar Feb 22 '24 17:02 UnsignedByte

Awesome! I think the primary goals are:

  • Matching the throughput of Spiral FFTs
  • Minimizing the use of assume to only "algebraic properties" that Filament's encoding cannot reason about. We have a bunch of assume that actually encode circuit properties that we should get rid of (and implement features needed to get rid of them)

Iterative streaming would be weird because the throughput would be terrible; we already have this problem because we have to flush the butterfly pipelines when doing stage reuse.

rachitnigam avatar Feb 22 '24 17:02 rachitnigam

What do you mean by "circuit properties"? Are we talking about the assume statements used to speed up compilation?

UnsignedByte avatar Feb 24 '24 22:02 UnsignedByte

Nope, I mean assumes that state that a particular module's output parameter is equal to one or equal to another output parameter. Those kinds of properties should not be encoded using assume statements.

rachitnigam avatar Feb 24 '24 23:02 rachitnigam