Ascend C管理不同层级的物理内存时,用一种抽象的逻辑位置(TPosition)来表达各级别的存储,代替了片上物理存储的概念,达到隐藏硬件架构的目的。TPosition类型包括:
VECIN、VECOUT、VECCALC、A1、A2、B1、B2、CO1、CO2,具体介绍请参考TPosition。TPosition与物理内存的映射关系如
表1所示。
表1 TPosition与物理内存映射关系
TPosition |
物理内存 |
GM |
Global Memory |
VECIN |
Unified Buffer |
VECCALC |
Unified Buffer |
VECOUT |
Unified Buffer |
A1 |
L1 Buffer |
A2 |
L0A Buffer |
B1 |
L1 Buffer |
B2 |
L0B Buffer |
CO1 |
L0C Buffer |
CO2 |
Atlas 训练系列产品,Unified Buffer Atlas推理系列产品(Ascend 310P处理器)AI Core,Unified Buffer Atlas A2训练系列产品,Global Memory |
Ascend C内存管理模块在进行内存分配时会对起始地址进行对齐。各类存储单元的对齐要求如表2所示。
使用
Ascend C数据计算和数据搬运接口时,目的操作数和源操作数地址偏移对齐要求和
表2保持一致,如果
Ascend C指令接口中已说明操作数起始地址对齐要求,则以具体指令中的说明为准。
表2 不同存储单元的对齐要求
存储单元 |
对齐要求 |
Unified Buffer |
Atlas 训练系列产品,要求32Byte对齐 Atlas推理系列产品(Ascend 310P处理器)AI Core,要求32Byte对齐 Atlas A2训练系列产品,要求32Byte对齐 |
L1 Buffer |
512Byte对齐 |
L1OUT Buffer |
half类型数据要求512Byte对齐;float/int32_t/uint32_t类型数据要求1024Byte对齐 |
Global Memory |
暂无对齐要求 |