NVlabs / timeloop

Timeloop performs modeling, mapping and code-generation for tensor algebra workloads on various accelerator architectures.
https://timeloop.csail.mit.edu/
BSD 3-Clause "New" or "Revised" License
303 stars 99 forks source link

Query on setting multicast on a 2D mesh NoC #242

Closed matthew-mx closed 4 months ago

matthew-mx commented 4 months ago

Hello, I am tring to instancing a 2D mesh architecture such that a column of PEs could multicast to another column. I have refered to the Simple_PIM and the XY_NoC example, and I think the lattern might match my need. My problem now is how to set such network inside the layer of RF, as the examples only show a way to set a network between 2 adjacent layers. Besides, what is the use of DummyBuffer (in the former example)? Thanks!

angshuman-parashar commented 4 months ago

Timeloop's network abstraction is that all the nodes at a storage level have ports into a network, and the parent level also has a port on that same network. So the network is used both for parent<->child communication as well as for peer-to-peer communication between children.

DummyBuffer is just a wrapper used to create a spatial level without instantiating a real buffer at that level. This exposes a complete additional set of mapping dimensions.

matthew-mx commented 4 months ago

In a network MUST peers have a same parent node? I am working on a chip similar to Tesla's Dojo, using multi-channel memory (every channel is individual and corresponds to a PE). In my primary design there is a 4-layer architecture, root=> channel, channel=>RF, RF=>mac, and the RFs compose a 2D mesh. Another tentative idea is to abstract the multi-channel feature into the network between memory and PE. Does Timeloop theoretically support them?

matthew-mx commented 4 months ago

Besides, why does the eyeriss_like example (in both baseline_design and timeloop tutorial) use legacy network instead of XY_NoC mentioned in acclergy tutorial? XY_NoC.yaml.txt eyeriss_like.yaml.txt

matthew-mx commented 4 months ago

The eyeriss_like example is according to the 1st version, and it is the 1D muticast type in the graph. Is this right? Thanks eyeriss