Previous | Next --- Slide 32 of 55
Back to Lecture Thumbnails
fizzbuzz

In most circumstances, a language that specified things as low-level as what data should go in dram would be considered imperative, but spatial comes off as rather declarative. I guess that the terms imperative and declarative really should be used in reference to some task rather than just as static properties of a language or programming system.

nickbowman

Here's a summary of what was discussed in our breakout room and what Kunle touched on when we all came back together:

Spatial Programmer's Responsibility

  • Describing the algorithm as a hierarchy of different controllers (outer/inner)
  • Describing the memory hierarchy of the algorithm and data flow (what information should go in DRAM vs SRAM) as well as explicit data movement between DRAM/SRAM
  • Picking tiling factors for iteration, parallelism for inner controllers and scheduling for outer controllers

Spatial System's Responsibility

  • Does necessary banking and buffering of memory on the programmer's behalf in order to maximize performance and minimize resources (for things like pipelining)
  • Handles hardware generation for the desired target platform (FPGA and/or ASIC)
  • Gives performance debugging feedback (discussed extensively later on in the lecture)

(apologies if the above Markdown formatting doesn't come out right)

Please log in to leave a comment.