面积分组约束 - 2023.2 简体中文

AI 引擎内核与计算图编程指南 (UG1079)

Document ID
UG1079
Release Date
2023-12-04
Version
2023.2 简体中文

面积分组约束用于指定拼块和/或 shim 位置的范围,以便将一组节点(含一个或多个节点)映射到此面积内。面积分组约束可通过下列属性来指定。

groups
指定分组的集合。可包含如下分组:
tile-type
指定分组的 tile-type(拼块类型)。受支持的 tile-type 有:aie_tile、shim_tile 或 memory_tile。
column_min
分组左下角的列索引。
row_min
分组左下角的行索引。
column_max
分组右上角的列索引。
row_max
分组右上角的行索引。
contain_routing
此布尔值如果指定为 true,则可确保所有布线(包括 nodeGroup 中包含的节点之间的信号线)均约束在面积分组内。
exclude_routing
此布尔值如果指定为 true,则可确保所有布线(不包括 nodeGroup 的节点之间的信号线)均排除在面积分组外。
exclude_placement
此布尔值如果指定为 true,则可防止将 nodeGroup 内不包含的所有节点都布局到面积分组边界框范围内。

AI 引擎拼块或存储器拼块范围采用 (column, row):(column, row) 形式,其中第一个拼块为左下角,第二个拼块则为右上角。列和行的值基于零,其中第零行从最下层的计算处理器开始计数,第零列从最左侧的列开始计数。

shim 范围采用 (column):(column) 形式,其中第一个值为最左侧的列,第二个值为最右侧的列。列值基于零,其中第零行从最下层的计算处理器开始计数,第零列从最左侧的列开始计数。shim 范围还允许指定可选通道,例如,(column, channel):(column, channel)。

面积分组用于排除器件上的某一范围,确保编译器不将此范围用于映射,(可选)这部分器件范围的布线方式如下。

  • 要从布线器中排除某一范围,请设置 nodeGroup 并将exclude_placement设为 true。
  • 要从映射器中排除某一范围,请设置 nodeGroup 并将exclude_routing设为 true。
  • 要将所有信号线都包含在 nodeGroup 内以供布线器和映射器使用,请设置 nodeGroup 并将contain_routing设为 true。
注释: 在“全局约束”部分中可包含任意数量的面积分组约束,前提是每项约束都有唯一的名称。

语法

"areaGroup": {
  "name": string,

  "nodeGroup": [<node list>], (*optional)
  "tileGroup": [<tile list>], (*optional)
  "shimGroup": [<shim list>], (*optional)
  "contain_routing": bool, (*optional)
  "exclude_routing": bool, (*optional)
  "exclude_placement"" bool, (*optional)
}

<node list> ::= <node name>[,<node name>...]

<tile array> ::= <tile value>[,<tile value>...]
<tile value> ::= <tile range> | <tile address>
<tile range> ::= "<tile address>[:<tile address>]"
<tile address> ::= (<column>, <row>)

<shim array> ::= <shim value>[,<shim value>...]
<shim value> ::= <shim range> | <shim address>
<shim range> ::= "<shim address>[:<shim address>]"
<shim address> ::= (<column>[,<channel>])

<node name> ::= string
<column> ::= integer
<row> ::= integer
<channel> ::= integer

示例

{
  "GlobalConstraints": {
    "areaGroup": {
      "name": "mygraph_area_group",
      "nodeGroup": ["mygraph.k1", "mygraph.k2"],
      "tileGroup": ["(2,0):(2,3)"],
      "shimGroup": ["0:3"]
    }
  }
}

排除示例

{
  "GlobalConstraints": {
    "areaGroup": {
      "name": "mygraph_excluded_area_group",

      "tileGroup": ["(3,0):(4,3)"],
      "shimGroup": ["3:4"],
      "exclude_routing": true
    }
  }
}