Reserved Memory Constraint - 2024.1 English

AI Engine-ML Kernel and Graph Programming Guide (UG1603)

Document ID
UG1603
Release Date
2024-06-06
Version
2024.1 English

This constrains the location of system memory (stack and heap) for a kernel to a specific address on a specific tile. The address can be specified in one of two different ways:

  • Column, row, bankId, and offset, where the tile is specified by column, row. The bankId is relative to the tile and can be set to either 0, 1, 2, or 3. The offset address is relative to the bankId, and can be set to any value from 0 to 8192 which corresponds to the maximum number of bytes in a bank.
  • Column, row, and bankId, where the bankId is relative to the tile and can be set to either 0, 1, 2, or 3.
    Note: The hardware treats of each AI Engine-ML memory as eight banks of 128-bit width data. The AI Engine compiler treats of each AI Engine memory as four banks of 256-bit width data.

Syntax

"reserved_memory": <bank_address>
<bank_address> ::= {
  "column": integer,
  "row": integer,
  "bankId": integer,
  "offset": integer
}
<bank_address> ::= {
  "column": integer,
  "row": integer,
  "bankId": integer
}

Example

{
  "NodeConstraints": {
    "mygraph.k1": {
      "reserved_memory": {
        "column": 2,
        "row": 1,
        "bankId": 3, 
        "offset": 4128
      }
    },
    "mygraph.k2": {
      "reserved_memory": {
        "column": 1,
        "row": 1,
        "bankId": 3
      }
    }
  }
}