-
Notifications
You must be signed in to change notification settings - Fork 165
Description
Right now the SequentialPlacer uses heuristics to explore the placement of ObjectFifo endpoints to attempt to avoid overallocating channels. This is done without querying whether the device supports shared memory, so this heuristic can diverge a fair amount from the number of channels actually required by ObjectFifos in a design.
Ideally, the SequentialPlacer will use logic in the compiler to power it's heuristics, e.g., query if shared memory can be used instead of a channel to avoid over-counting channels. This is a bit of a complex task, and I'm not sure how well it will work, so I'm breaking it up into smaller pieces.
These pieces include:
- Exposing the
is_legal_mem_affinityfunction in the device class (Python Device class extension and cleanup #2691) - Creating and testing the usefulness of this function for this purpose as an incremental step (Device and ObjectFifo tests #2733)
- Modifying the
SequentialPlacerto use this function in Channel counting - Reduce duplicated logic between the
SequentialPlacerand the compiler for estimating channels. This can be seen as a precursor step to moving theSequentialPlacerinto the compiler: [experiment] Support unplaced TileOps #2265
In addition to the overall goal of having the SequentialPlacer decision making align with decision making within the compiler, this should also --- hopefully --- make the SequentialPlacer more robust (e.g., #2666)