昇腾CANN/asc-devkit: L1与BiasTable Buffer数据搬运

L1与BiasTable Buffer数据搬运

【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C++标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit

L1ToBiasTable Buffer连续数据搬运(DataCopy)

DataCopy能够实现L1 Buffer至BiasTable Buffer的连续数据搬运,数据搬运时格式和内容保持不变。

具体支持的数据通路为(以逻辑位置TPosition表示):

  • L1 Buffer -> BiasTable Buffer
    • C1 -> C2

搬运的数据用于矩阵计算,接口具体介绍请参考:L1ToBiasTable-Buffer数据搬运(DataCopy)。

src和dst分别为源操作数和目的操作数;count为连续搬运的元素个数。

template <typename T> __aicore__ inline void DataCopy(const LocalTensor<T>& dst, const LocalTensor<T>& src, const uint32_t count)

L1ToBiasTable Buffer高维切分数据搬运(DataCopy)

DataCopy能够实现L1 Buffer至BiasTable Buffer的连续数据搬运和非连续数据搬运,数据搬运时格式和内容保持不变。

高维切分是指能够通过配置数据块个数、单个数据块长度、地址偏移等搬运参数实现非连续搬运。

具体支持的数据通路为(以逻辑位置TPosition表示):

  • L1 Buffer -> BiasTable Buffer
    • C1 -> C2

搬运的数据用于矩阵计算,接口具体介绍请参考:L1ToBiasTable-Buffer数据搬运(DataCopy)。

src和dst分别为源操作数和目的操作数;repeatParams为搬运参数。

  • 连续或非连续搬运场景(高维切分)

    template <typename T> __aicore__ inline void DataCopy(const LocalTensor<T>& dst, const LocalTensor<T>& src, const DataCopyParams& repeatParams)
  • 连续或非连续搬运场景,支持源操作数和目的操作数数据类型不一致

    template <typename T, typename U> __aicore__ inline void DataCopy(const LocalTensor<T>& dst, const LocalTensor<U>& src, const DataCopyParams& repeatParams)

【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C++标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考