Deeploy.Targets.Neureka.TileConstraints.NeurekaConvTileConstraint.NeurekaConvTileConstraint

class Deeploy.Targets.Neureka.TileConstraints.NeurekaConvTileConstraint.NeurekaConvTileConstraint

Bases: TileConstraint

Shared tiling logic for the N-EUREKA convolution variants (pointwise, depthwise, dense).

The serialization skeleton (input-cube computation, I/O strides, subtile counters, load schedules) is identical across the three; the parts that genuinely differ are exposed as hooks:

  • _ConvTemplate : the template class providing getCounters for this variant.

  • _adjustInputCube: post-process the computed input cube (depthwise slices channels).

  • _addWeightSchedule: emit the weight base offset / load schedule (packing differs per variant).

Methods

__init__()

__init__()

addGeometricalConstraint(tilerModel, ...)

Override this function to add your geometric constraints.

addPolicyConstraint(tilerModel, parseDict, ctxt)

Override this function to add your custom constraints to your node.

constructSymbolicNodeRep(tilerModel, ...)

extractBaseAddr(tilingSolution, ...)

getBaseAddr(tilingSolution, targetMemLevel, name)

sanitizeTilingSchedule(tilingSchedule)

serializeTilingSolution(tilingSolution, ...)

Compute the required input tiles as a sequence of HyperRectangles

wrapTilingSolution(tilingSolution, ...)

classmethod serializeTilingSolution(tilingSolution: NodeMemoryConstraint, absoluteOutputCubes: List[AbsoluteHyperRectangle], targetMemLevel: str, ctxt: NetworkContext, operatorRepresentation: Dict[str, str | Any]) Tuple[VariableReplacementScheme, TilingSchedule]

Compute the required input tiles as a sequence of HyperRectangles

Parameters:
  • tilingSolution (NodeMemoryConstraint) – The final tiling solution computed in the midend

  • absoluteOutputCubes (List[AbsoluteHyperRectangle]) – A list of HyperRectangles that represent tiles of the operator’s outputs with absolute offsets

  • targetMemLevel (str) – The name of the MemoryLevel registered within the Platform’s MemoryHierarchy where tiles should be transferred into (e.g.: L2, L1,… )

  • ctxt (NetworkContext) – The current NetworkContext

  • operatorRepresentation (Dict) – The operator’s node representation dictionary

Returns:

Return a VariableReplacementScheme to express which expressions within the target template might have to be replaced due to tiling. Also return a TilingSchedule to define one input HyperRectangle tuple for each output tile

Return type:

Tuple[VariableReplacementScheme, TilingSchedule]

Raises:

Exception – Raises an exception unless overridden in the calling class

static addGeometricalConstraint(tilerModel: TilerModel, parseDict: Dict, ctxt: NetworkContext) TilerModel

Override this function to add your geometric constraints. Each dimension of the output tensors should be determinable through a linear equation that utilizes the dimensions of the input tensors and the attributes of the nodes.

static addPolicyConstraint(tilerModel: TilerModel, parseDict: Dict, ctxt: NetworkContext) TilerModel

Override this function to add your custom constraints to your node.