pypto_pro.language.MemorySpace#
产品支持情况#
Ascend 950PR/Ascend 950DT:支持
Atlas A3 训练系列产品/Atlas A3 推理系列产品:不支持
Atlas A2 训练系列产品/Atlas A2 推理系列产品:不支持
功能说明#
内存空间枚举,用于描述PyPTO数据对象对应的硬件存储区域。创建片上Tile时,该枚举作为pypto_pro.language.TileType的target_memory属性,用于指定Tile的目标内存空间。
不同的枚举值对应AI处理器的全局存储或AI Core内的片上存储区域。对于片上Tile,内存空间决定其可参与的计算类型和支持的数据搬运路径。
原型定义#
class MemorySpace(enum.IntEnum):
DDR = ...
Vec = ...
Mat = ...
Left = ...
Right = ...
Scaling = ...
Acc = ...
Bias = ...
ScaleLeft = ...
ScaleRight = ...
参数说明#
参数值 |
存储单元 |
用法与约束 |
|---|---|---|
pypto_pro.language.MemorySpace.DDR |
GM |
表示Kernel输入、输出Tensor所在的存储区域。该枚举值用于表示Tensor存储位置,不用作make_tile/make_tile_group的片上Tile分配目标。 |
pypto_pro.language.MemorySpace.Vec |
UB |
Vector Core的工作缓冲区,用于逐元素、归约、排序、纯Vector量化/反量化等SIMD计算。Tile起始地址须按32字节对齐。 |
pypto_pro.language.MemorySpace.Mat |
L1 Buffer |
用于存放Cube计算的中间数据。数据从GM加载后可搬入L0A Buffer、L0B Buffer、BiasTable Buffer、Fixpipe Buffer、L0A_MX Buffer和L0B_MX Buffer。Tile起始地址须按32字节对齐。 |
pypto_pro.language.MemorySpace.Left |
L0A Buffer |
用于存放矩阵乘的左操作数,与L0B Buffer中的右操作数共同参与Cube计算。Tile起始地址须按512字节对齐。 |
pypto_pro.language.MemorySpace.Right |
L0B Buffer |
用于存放矩阵乘的右操作数,与L0A Buffer中的左操作数共同参与Cube计算。Tile起始地址须按512字节对齐。 |
pypto_pro.language.MemorySpace.Scaling |
Fixpipe Buffer |
仅用于FIX数据通路的per-channel随路量化/反量化参数。该空间不是quant/dequant接口的scale存储区。数据需经L1 Buffer搬入:源Tile须为1行,目的Tile数据类型须为DT_INT64或DT_UINT64,目的地址和数据量均须按128字节对齐,单次搬运数据量不得超过4096字节。 |
pypto_pro.language.MemorySpace.Acc |
L0C Buffer |
用于存放matmul、matmul_acc、matmul_mx等Cube计算的结果或中间累加值。Tile起始地址须按64字节对齐。 |
pypto_pro.language.MemorySpace.Bias |
BiasTable Buffer |
用于存放矩阵计算的偏置数据。偏置数据不能从GM直接加载,需经L1 Buffer中转。经L1 Buffer搬入时,源Tile须为1行,目的地址和数据量均须按64字节对齐,单次搬运数据量不得超过4096字节。 |
pypto_pro.language.MemorySpace.ScaleLeft |
L0A_MX Buffer |
仅用于存放MX矩阵乘中左量化系数矩阵。Tile起始地址须按32字节对齐;其地址必须等于配套左矩阵在L0A Buffer中的地址右移4位。 |
pypto_pro.language.MemorySpace.ScaleRight |
L0B_MX Buffer |
仅用于存放MX矩阵乘中右量化系数矩阵。Tile起始地址须按32字节对齐;其地址必须等于配套右矩阵在L0B Buffer中的地址右移4位。 |