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推理系列产品AI Core,Unified Buffer
Atlas A2训练系列产品,Global Memory
|
Ascend C内存管理模块在进行内存分配时会对起始地址进行对齐。各类存储单元的对齐要求如表2所示。
使用
Ascend C数据计算和数据搬运接口时,目的操作数和源操作数地址偏移对齐要求和
表2保持一致,如果
Ascend C指令接口中已说明操作数起始地址对齐要求,则以具体指令中的说明为准。
表2 不同存储单元的对齐要求存储单元
|
对齐要求
|
Unified Buffer
|
Atlas 训练系列产品,要求32Byte对齐
Atlas推理系列产品AI Core,要求32Byte对齐
Atlas A2训练系列产品,要求32Byte对齐
|
L1 Buffer
|
512Byte对齐
|
L1OUT Buffer
|
half类型数据要求512Byte对齐;float/int32_t/uint32_t类型数据要求1024Byte对齐
|
Global Memory
|
暂无对齐要求
|