IRON c0fa95fa5b5e3bdca375c4f4372c0fdc98022451
Loading...
Searching...
No Matches
Public Member Functions | Public Attributes | Protected Member Functions | List of all members
iron.placers.SequentialPlacer Class Reference
Inheritance diagram for iron.placers.SequentialPlacer:
Inheritance graph
[legend]
Collaboration diagram for iron.placers.SequentialPlacer:
Collaboration graph
[legend]

Public Member Functions

 __init__ (self, Optional[int] cores_per_col=None)
 
 make_placement (self, Device device, Runtime rt, list[Worker] workers, list[ObjectFifoHandle] object_fifos)
 

Public Attributes

 cores_per_col
 

Protected Member Functions

int _get_common_col (self, list[Tile] tiles)
 
Tile _find_col_match (self, int col, list[Tile] tiles, Device device)
 
 _update_channels (self, ObjectFifoEndpoint ofe, Tile tile, bool output, int num_required_channels, dict[Tile, tuple[ObjectFifoEndpoint, int]] channels, list[Tile] tiles, Device device)
 
 _place_endpoint (self, ObjectFifoEndpoint ofe, list[Tile] tiles, int common_col, dict[Tile, tuple[ObjectFifoEndpoint, int]] channels, Device device, output=False, link_tiles=[], link_channels={})
 

Detailed Description

SequentialPlacer is a simple implementation of a placer. The SequentialPlacer is so named
because it will sequentially place workers to Compute Tiles. After workers are placed, Memory Tiles and
Shim Tiles are placed as close to the column of the given compute tile as possible.

The SequentialPlacer only does validation of placement with respect to available DMA channels on the tiles.
However, it can yield invalid placements that exceed other resource limits, such as memory, For complex or
resource sensitive designs, a more complex placer or manual placement is required.

The user may define a limited number of cores per column, which could help with issues in using packet-
switched tracing. By limiting the number of cores per column, the placer will assign workers to compute
tiles in a row-wise direction up to the defined limit then move to the next column for subsequent placement.

Constructor & Destructor Documentation

◆ __init__()

iron.placers.SequentialPlacer.__init__ (   self,
Optional[int]   cores_per_col = None 
)

Member Function Documentation

◆ _find_col_match()

Tile iron.placers.SequentialPlacer._find_col_match (   self,
int  col,
list[Tile tiles,
Device  device 
)
protected
A utility function that sequentially searches a list of tiles to find one with a matching column.
The column is increased until a tile is found in the device, or an error is signaled.

◆ _get_common_col()

int iron.placers.SequentialPlacer._get_common_col (   self,
list[Tile tiles 
)
protected
A utility function that calculates a column that is "close" or "common"
to a set of tiles. It is a simple heuristic using the average to represent "distance".

◆ _place_endpoint()

iron.placers.SequentialPlacer._place_endpoint (   self,
ObjectFifoEndpoint  ofe,
list[Tile tiles,
int  common_col,
dict[Tile, tuple[ObjectFifoEndpoint, int]]  channels,
Device  device,
  output = False,
  link_tiles = [],
  link_channels = {} 
)
protected
A utility function that places a given endpoint based on available DMA channels. If the endpoint is a
link, both input and output channels should be accounted for. Calls _update_channels() to update channel
dictionaries and tile lists.

◆ _update_channels()

iron.placers.SequentialPlacer._update_channels (   self,
ObjectFifoEndpoint  ofe,
Tile  tile,
bool  output,
int  num_required_channels,
dict[Tile, tuple[ObjectFifoEndpoint, int]]  channels,
list[Tile tiles,
Device  device 
)
protected
A utility function that updates given channel and tile lists. It appends a new
(endpoint, num_required_channels) entry to the channels dict for the given tile key, then
verifies whether the total entries for that tile surpass the maximum number of available
channels. If so, it removes the tile from the list of available tiles.

◆ make_placement()

iron.placers.SequentialPlacer.make_placement (   self,
Device  device,
Runtime  rt,
list[Worker workers,
list[ObjectFifoHandle object_fifos 
)
Assign placement informatio to a program.

Args:
    device (Device): The device to use for placement.
    rt (Runtime): The runtime information for the program.
    workers (list[Worker]): The workers included in the program.
    object_fifos (list[ObjectFifoHandle]): The object fifos used by the program.

Reimplemented from iron.placers.Placer.

Member Data Documentation

◆ cores_per_col

iron.placers.SequentialPlacer.cores_per_col

The documentation for this class was generated from the following file: