|
IRON c0fa95fa5b5e3bdca375c4f4372c0fdc98022451
|


Public Member Functions | |
| __init__ (self, type[np.ndarray] obj_type, int|None depth=2, str|None name=None, list[Sequence[int]]|None dims_to_stream=None, list[Sequence[int]]|None dims_from_stream_per_cons=None, bool plio=False) | |
| int | depth (self) |
| list[Sequence[int]] | dims_from_stream_per_cons (self) |
| list[Sequence[int]] | dims_to_stream (self) |
| ObjectFifoCreateOp | op (self) |
| Sequence[int] | shape (self) |
| np.dtype | dtype (self) |
| type[np.ndarray] | obj_type (self) |
| set_iter_count (self, int iter_count) | |
| str | __str__ (self) |
| ObjectFifoHandle | prod (self, int|None depth=None) |
| ObjectFifoHandle | cons (self, int|None depth=None, list[Sequence[int]]|None dims_from_stream=None) |
| list[PlacementTile] | tiles (self, bool cons_only=False) |
| bool | can_used_shared_mem (self, Device device, bool cons_only=False) |
| None | resolve (self, ir.Location|None loc=None, ir.InsertionPoint|None ip=None) |
Public Attributes | |
| name | |
Protected Member Functions | |
| Tile | _prod_tile_op (self) |
| list[Tile] | _cons_tiles_ops (self) |
| int|list[int] | _get_depths (self) |
| list[ObjectFifoEndpoint] | _get_endpoint (self, bool is_prod) |
| _acquire (self, ObjectFifoPort port, int num_elem) | |
| _release (self, ObjectFifoPort port, int num_elem) | |
Protected Attributes | |
| _depth | |
| _obj_type | |
| _dims_to_stream | |
| _dims_from_stream_per_cons | |
| _plio | |
| _resolving | |
| _iter_count | |
| _prod | |
| _cons | |
| _op | |
Private Member Functions | |
| int | __get_index (cls) |
Static Private Attributes | |
| int | __of_index = 0 |
An ObjectFifo is a method of representing synchronized, explicit dataflow between IRON program components such as Workers and the Runtime. Internally, it is a circular buffer with a given depth and type of buffer. The users of an ObjectFifo are explicitly either a Producer or a Consumer, and each user has a Placeable endpoint.
This is used to generate unique ObjectFifo names.
| iron.dataflow.objectfifo.ObjectFifo.__init__ | ( | self, | |
| type[np.ndarray] | obj_type, | ||
| int | None | depth = 2, |
||
| str | None | name = None, |
||
| list[Sequence[int]] | None | dims_to_stream = None, |
||
| list[Sequence[int]] | None | dims_from_stream_per_cons = None, |
||
| bool | plio = False |
||
| ) |
Construct an ObjectFifo.
Args:
obj_type (type[np.ndarray]): The type of each buffer in the ObjectFifo
depth (int | None, optional): The default depth of the ObjectFifo endpoints. Defaults to 2.
name (str | None, optional): The name of the ObjectFifo. If None is given, a unique name will be generated. Defaults to None.
dims_to_stream (list[Sequence[int]] | None, optional): Data layout transformations applied when data is pushed onto the AXI stream, described as pairs of (size, stride) from highest to lowest dimension. Defaults to None.
dims_from_stream_per_cons (list[Sequence[int]] | None, optional): List of data layout transformations applied by each consumer when data is read from the AXI stream, described as pairs of (size, stride) from highest to lowest dimension. Defaults to None.
plio (bool, optional): _description_. Defaults to False.
Raises:
ValueError: _description_
|
private |
| str iron.dataflow.objectfifo.ObjectFifo.__str__ | ( | self | ) |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
| bool iron.dataflow.objectfifo.ObjectFifo.can_used_shared_mem | ( | self, | |
| Device | device, | ||
| bool | cons_only = False |
||
| ) |
Checks if all endpoints of the object fifo have a legal memory affinity.
| ObjectFifoHandle iron.dataflow.objectfifo.ObjectFifo.cons | ( | self, | |
| int | None | depth = None, |
||
| list[Sequence[int]] | None | dims_from_stream = None |
||
| ) |
Returns an ObjectFifoHandle of type consumer. Each ObjectFifo may have multiple consumers, so this
will return a new consumer handle every time is it callled.
Args:
depth (int | None, optional): The depth of the buffers at the endpoint corresponding to this consumer handle. Defaults to None.
dims_from_stream (list[Sequence[int]] | None, optional): Dimensions from stream for this consumer. Defaults to None.
Raises:
ValueError: Arguments are validated
Returns:
ObjectFifoHandle: A consumer handle to this ObjectFifo.
| int iron.dataflow.objectfifo.ObjectFifo.depth | ( | self | ) |
The default depth of the ObjectFifo. This may be overriden by an ObjectFifoHandle upon construction.
| list[Sequence[int]] iron.dataflow.objectfifo.ObjectFifo.dims_from_stream_per_cons | ( | self | ) |
The default dimensions from stream per consumer value. This may be overriden by an ObjectFifoHandle of type consumer.
| list[Sequence[int]] iron.dataflow.objectfifo.ObjectFifo.dims_to_stream | ( | self | ) |
The dimensions to stream value. This will be shared by the ObjectFifoHandle of type producer.
| np.dtype iron.dataflow.objectfifo.ObjectFifo.dtype | ( | self | ) |
The per-element data type of each element in each buffer belonging to the ObjectFifo
| type[np.ndarray] iron.dataflow.objectfifo.ObjectFifo.obj_type | ( | self | ) |
The tensor type of each buffer belonging to the ObjectFifo
| ObjectFifoCreateOp iron.dataflow.objectfifo.ObjectFifo.op | ( | self | ) |
| ObjectFifoHandle iron.dataflow.objectfifo.ObjectFifo.prod | ( | self, | |
| int | None | depth = None |
||
| ) |
Returns an ObjectFifoHandle of type producer. Each ObjectFifo may have only one producer
handle, so if one already exists, a new reference to this handle will be returned.
Args:
depth (int | None, optional): The depth of the buffers at the endpoint corresponding to the producer handle. Defaults to None.
Raises:
ValueError: Arguments are validated
ValueError: If depth was not specified on ObjectFifo construction, depth must be specified here.
Returns:
ObjectFifoHandle: The producer handle to this ObjectFifo.
| None iron.dataflow.objectfifo.ObjectFifo.resolve | ( | cls, | |
| ir.Location | None | loc = None, |
||
| ir.InsertionPoint | None | ip = None |
||
| ) |
Resolve the current object into one or more MLIR operations.
Should only be called within an MLIR context.
Args:
loc (ir.Location | None, optional): Location is used by MLIR object during construction in some cases. Defaults to None.
ip (ir.InsertionPoint | None, optional): InsertionPoint is used by MLIR object during construction in some cases. Defaults to None.
Reimplemented from iron.resolvable.Resolvable.
| iron.dataflow.objectfifo.ObjectFifo.set_iter_count | ( | self, | |
| int | iter_count | ||
| ) |
Set iteration count for DMA BD (Buffer Descriptor) chaining on MemTile for the ObjectFifo.
Args:
iter_count (int): Number of forward chain iterations.
- Must be in range [1, 256]: Forward chain with specified number of iterations
Raises:
ValueError: If iter_count is outside the valid range [1, 256]
| Sequence[int] iron.dataflow.objectfifo.ObjectFifo.shape | ( | self | ) |
The shape of each buffer belonging to the ObjectFifo
| list[PlacementTile] iron.dataflow.objectfifo.ObjectFifo.tiles | ( | self, | |
| bool | cons_only = False |
||
| ) |
The list of placement tiles corresponding to the endpoints of all handles of this ObjectFifo
Raises:
ValueError: A producer handle must be constructed.
ValueError: At least one consumer handle must be constructed.
Returns:
list[PlacementTile]: A list of tiles of the endpoints of this ObjectFifo.
|
staticprivate |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
| iron.dataflow.objectfifo.ObjectFifo.name |