stanford-ppl / spatial

Spatial: "Specify Parameterized Accelerators Through Inordinately Abstract Language"
https://spatial.stanford.edu
MIT License
274 stars 32 forks source link

Auto Schedule Controllers in Parallel if no dependencies #151

Closed mattfel1 closed 5 years ago

mattfel1 commented 6 years ago

For example:

val x = Reduce(Reg[T])(...){i => mem1(i)}{_+_}
val y = Reduce(Reg[T])(...){i => mem2(i)}{_+_}

should be scheduled inside a parallel......

Or its time to move to token based control?

dkoeplin commented 6 years ago

+1 for moving to token-based control. In that case we would need some improved helper methods to track things that will actually execute in parallel and producer/consumer distances.

mattfel1 commented 5 years ago

Done. There is a --noBindParallels global compile flag, and also a Pipe.NoBind annotation you can add to specific controllers. Some apps get a tiny speedup, some get a slowdown in vcs depending on how this changes dram congestion but I added the flag to these so they should perform the same as before.