昇腾AI算子开发套件F32通道拆分
F32 Channel Split【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言原生支持C和C标准规范主要由类库和语言扩展层构成提供多层级API满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkitF32 Channel Split是矩阵计算结果搬出过程中的通道拆分能力。当源类型和目的类型均为float、目的格式为NZ且CopyL0C2GMTrait::enableChannelSplit或CopyL0C2UBTrait::enableChannelSplit设置为true时硬件会将16×16的分形矩阵拆分为两个独立的16×8小Z分形矩阵。启用该能力后目的NZ输出的C0按8处理N方向大小必须为8的倍数。如下图所示当源操作数shape为[64, 32]时搬出结果会被拆分为16个独立的16×8分形矩阵。当源操作数shape为[64, 24]时搬出结果会被拆分为3列16×8分形矩阵。图1F32 Channel Split示意图1图2F32 Channel Split示意图2调用形式using namespace AscendC::Te; auto l0c MakeTensor(MakeMemPtr(l0cAddr), MakeFrameLayoutNZLayoutPtn, 16(m, n)); auto gm MakeTensor(MakeMemPtr(gmAddr), MakeFrameLayoutNZLayoutPtn, float(m, n)); constexpr CopyL0C2GMTrait l0c2gmTrait { RoundMode::DEFAULT, false, true }; struct CopyL0C2GMTraitCustom { using TraitType CopyL0C2GMTrait; static constexpr const TraitType value l0c2gmTrait; }; FixpipeParams params; auto atom MakeCopy(CopyL0C2GM{}, CopyL0C2GMTraitCustom{}).with(params); Copy(atom, gm, l0c);约束说明F32 Channel Split仅支持源类型和目的类型均为float目的格式为NZ。启用F32 Channel Split时不能同时使能unitFlagN方向大小必须为8的倍数。【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言原生支持C和C标准规范主要由类库和语言扩展层构成提供多层级API满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考