GM与UB数据搬运【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言原生支持C和C标准规范主要由类库和语言扩展层构成提供多层级API满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit总体说明Global MemoryGM与Unified BufferUB之间的数据搬运提供了多样化的接口支持丰富的数据搬运场景见表1。为实现高效的向量Vector计算系统支持将数据从GM搬运至UB供Vector计算单元进行向量计算计算完成后再将结果从UB搬回GM完成数据闭环。开发者能够通过灵活配置结构体参数精确控制数据块数量、每个地址长度及地址间隔等关键属性实现连续和非连续数据搬运高维切分数据搬运充分释放硬件的数据搬运与计算协同能力显著提升向量算子的执行效率与整体性能。表 1GM与UB数据搬运接口概述数据通路功能描述GM-UB连续数据搬运(DataCopy)提供基础的数据搬运能力数据在传输过程中保持原始格式和内容不变支持连续数据搬运。UB-GM连续数据搬运(DataCopy)提供基础的数据搬运能力数据在传输过程中保持原始格式和内容不变支持连续数据搬运。GM-UB高维切分数据搬运(DataCopy)提供基础的数据搬运能力数据在传输过程中保持原始格式和内容不变支持连续和非连续的数据搬运。UB-GM高维切分数据搬运(DataCopy)提供基础的数据搬运能力数据在传输过程中保持原始格式和内容不变支持连续和非连续的数据搬运。GM-UB切片数据搬运(DataCopy)该接口为软仿接口支持数据的切片搬运提取多维Tensor数据的子集进行搬运。UB-GM切片数据搬运(DataCopy)该接口为软仿接口支持数据的切片搬运提取多维Tensor数据的子集进行搬运。GM-UB随路转换ND2NZ搬运(DataCopy)该接口为软仿接口支持在从Global Memory到Unified Buffer的数据搬运过程中进行ND到NZ格式的转换。UB-GM随路转换NZ2ND搬运(DataCopy)该接口为软仿接口支持在从Unified Buffer到Global Memory的数据搬运过程中进行NZ到ND格式的转换。GM-UB多维数据搬运NDDMA(DataCopy)多维数据搬运接口相比于基础数据搬运接口可更加自由配置搬入的维度信息以及对应的Stride。GM-UB非对齐数据搬运(DataCopyPad)支持数据的非对齐搬运搬运到UB时可以自行填充数据。UB-GM非对齐数据搬运(DataCopyPad)支持数据的非对齐搬运。GM与UB连续数据搬运(DataCopy)支持Global Memory与Unified Buffer之间的连续数据搬运数据在传输过程中保持原始格式和内容不变。具体支持的数据通路为以逻辑位置TPosition表示Global Memory - Unified BufferGM - VECINUnified Buffer - Global MemoryVECOUT - GMCO2 - GM仅Atlas 推理系列产品AI Core支持搬运的数据用于矢量计算具体的接口请参考GM与UB连续数据搬运(DataCopy).md)。src和dst分别为源操作数和目的操作数count为连续搬运的元素个数。Global Memory - Unified Buffertemplate typename T __aicore__ inline void DataCopy(const LocalTensorT dst, const GlobalTensorT src, const uint32_t count)Unified Buffer - Global Memorytemplate typename T __aicore__ inline void DataCopy(const GlobalTensorT dst, const LocalTensorT src, const uint32_t count)GM与UB高维切分数据搬运(DataCopy)支持Global Memory与Unified Buffer之间的高维切分数据搬运数据在传输过程中保持原始格式和内容不变。高维切分数据搬运可通过配置数据块个数、单个数据块长度、地址偏移等搬运参数同时支持非连续和连续的数据搬运。具体支持的数据通路为以逻辑位置TPosition表示Global Memory - Unified BufferGM - VECINUnified Buffer - Global MemoryVECOUT - GMCO2 - GM仅Atlas 推理系列产品AI Core支持搬运的数据用于矢量计算具体的接口请参考GM与UB高维切分数据搬运(DataCopy).md)。src和dst分别为源操作数和目的操作数repeatParams为DataCopyParams类型的搬运参数通过该参数可配置搬运的数据块大小、个数、间隔等信息同时支持非连续和连续搬运。Global Memory - Unified Buffertemplate typename T __aicore__ inline void DataCopy(const LocalTensorT dst, const GlobalTensorT src, const DataCopyParams repeatParams)Unified Buffer - Global Memorytemplate typename T __aicore__ inline void DataCopy(const GlobalTensorT dst, const LocalTensorT src, const DataCopyParams repeatParams)GM与UB切片数据搬运(DataCopy)该接口为软仿接口从易用性角度出发进行设计支持数据的切片搬运提取多维Tensor数据的子集进行搬运。具体支持的数据通路为以逻辑位置TPosition表示Global Memory - Unified BufferGM - VECINUnified Buffer - Global MemoryVECOUT - GMCO2 - GM仅Atlas 推理系列产品AI Core支持搬运的数据用于矢量计算具体的接口请参考GM与UB切片数据搬运(DataCopy).md)。src和dst分别为源操作数和目的操作数dstSliceInfo和srcSliceInfo分别为目的和源操作数的切片信息类型为SliceInfodimValue为操作数维度信息。Global Memory - Unified Buffertemplate typename T __aicore__ inline void DataCopy(const LocalTensorT dst, const GlobalTensorT src, const SliceInfo dstSliceInfo[], const SliceInfo srcSliceInfo[], const uint32_t dimValue 1)Unified Buffer - Global Memorytemplate typename T __aicore__ inline void DataCopy(const GlobalTensorT dst, const LocalTensorT src, const SliceInfo dstSliceInfo[], const SliceInfo srcSliceInfo[], const uint32_t dimValue 1)GM - UB随路转换ND2NZ搬运(DataCopy)该接口为软仿接口从易用性角度出发进行设计支持在从Global Memory到Unified Buffer的数据搬运过程中进行ND到NZ格式的转换。具体支持的数据通路为以逻辑位置TPosition表示Global Memory - Unified BufferGM - VECIN搬运的数据用于矢量计算具体的接口请参考GM - UB随路转换ND2NZ搬运(DataCopy).md)。src和dst分别为源操作数和目的操作数intriParams为Nd2NzParams类型的搬运参数配置ND到NZ格式转换信息。不支持enableSmallC0模式template typename T __aicore__ inline void DataCopy(const LocalTensorT dst, const GlobalTensorT src, const Nd2NzParams intriParams)支持enableSmallC0模式仅Ascend 950PR/Ascend 950DT支持template typename T, bool enableSmallC0 false __aicore__ inline void DataCopy(const LocalTensorT dst, const GlobalTensorT src, const Nd2NzParams intriParams)UB - GM随路转换NZ2ND搬运(DataCopy)该接口为软仿接口从易用性角度出发进行设计支持在从Unified Buffer到Global Memory的数据搬运过程中进行NZ到ND格式的转换。具体支持的数据通路为以逻辑位置TPosition表示Unified Buffer - Global MemoryVECOUT - GMCO2 - GM仅Atlas 推理系列产品AI Core支持搬运的数据用于矢量计算具体的接口请参考UB-GM随路转换NZ2ND搬运(DataCopy).md)。src和dst分别为源操作数和目的操作数intriParams为Nz2NdParamsFull类型的搬运参数配置NZ到ND格式转换信息。template typename T __aicore__ inline void DataCopy(const GlobalTensorT dst, const LocalTensorT src, const Nz2NdParamsFull intriParams)GM - UB多维数据搬运NDDMA(DataCopy)多维数据搬运接口相比于基础数据搬运接口可更加自由配置搬入的维度信息以及对应的Stride。具体支持的数据通路为以逻辑位置TPosition表示Global Memory - Unified BufferGM - VECIN搬运的数据用于矢量计算具体的接口请参考GM - UB多维数据搬运NDDMA(DataCopy).md)。src和dst分别为源操作数和目的操作数params为NdDmaParams类型的搬运参数配置多维度搬运信息。Global Memory - Unified Buffer支持多维度搬运template typename T, uint8_t dim, const NdDmaConfig config kDefaultNdDmaConfig __aicore__ inline void DataCopy(const LocalTensorT dst, const GlobalTensorT src, const NdDmaParamsT, dim params)NDDMA Cache刷新__aicore__ inline void NdDmaDci()GM - UB非对齐数据搬运(DataCopyPad)该接口提供将数据从Global Memory非对齐搬运至Unified Buffer的功能可以根据开发者的需要自行填充数据。当每个搬运的数据块长度blockLen非32字节对齐时每一个数据块都需要填充数据至32字节对齐。特别地针对Ascend 950PR/Ascend 950DT支持Compact模式该模式支持单个数据块非32字节对齐将所有数据块合并成一个连续数据块在该数据块右侧填充数据至32字节对齐。具体支持的数据通路为以逻辑位置TPosition表示Global Memory - Unified BufferGM - VECINGM - VECOUTGM - VECCALC仅Ascend 950PR/Ascend 950DT支持搬运的数据用于矢量计算具体的接口请参考GM - UB非对齐数据搬运(DataCopyPad).md)。src和dst分别为源操作数和目的操作数dataCopyParams为DataCopyExtParams类型的搬运参数padParams为DataCopyPadExtParams类型的填充控制参数。不支持配置设置数据搬运模式modetemplate typename T __aicore__ inline void DataCopyPad(const LocalTensorT dst, const GlobalTensorT src, const DataCopyExtParams dataCopyParams, const DataCopyPadExtParamsT padParams)支持配置设置数据搬运模式mode仅Ascend 950PR/Ascend 950DT支持template typename T, PaddingMode mode PaddingMode::Normal __aicore__ inline void DataCopyPad(const LocalTensorT dst, const GlobalTensorT src, const DataCopyExtParams dataCopyParams, const DataCopyPadExtParamsT padParams)UB - GM非对齐数据搬运(DataCopyPad)该接口提供将数据从Unified Buffer非对齐搬运至Global Memory的功能。对于非32字节对齐的场景在读取Unified Buffer数据时会填入dummy假数据对齐到32B搬入Global Memory时会将dummy空数据丢弃从而实现Unified Buffer到Global Memory的非对齐搬运。具体支持的数据通路为以逻辑位置TPosition表示Unified Buffer - Global MemoryVECIN - GMVECOUT - GM搬运的数据用于矢量计算具体的接口请参考UB - GM非对齐数据搬运(DataCopyPad).md)。src和dst分别为源操作数和目的操作数dataCopyParams为DataCopyExtParams类型的搬运参数。不支持配置设置数据搬运模式modetemplate typename T __aicore__ inline void DataCopyPad(const GlobalTensorT dst, const LocalTensorT src, const DataCopyExtParams dataCopyParams)支持配置设置数据搬运模式mode仅Ascend 950PR/Ascend 950DT支持template typename T, PaddingMode mode PaddingMode::Normal __aicore__ inline void DataCopyPad(const GlobalTensorT dst, const LocalTensorT src, const DataCopyExtParams dataCopyParams)【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言原生支持C和C标准规范主要由类库和语言扩展层构成提供多层级API满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考