CANN/asc-devkit batch搬运矩阵计算技术说明

CANN/asc-devkit batch搬运矩阵计算技术说明 batch搬运【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言原生支持C和C标准规范主要由类库和语言扩展层构成提供多层级API满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkitbatch搬运是L0C Buffer到Global Memory或Unified Buffer搬运在矩阵最外层增加Batch维度的能力用于一次完成多块矩阵计算结果的搬运。功能说明源张量为NZ格式目的张量支持ND、DN或NZ格式。用户只需要在构造Layout时传入Batch参数Copy调用形式与非batch模式保持一致。源张量可通过MakeFrameLayoutNZLayoutPtn(batch, m, n)构造。目的张量可通过MakeFrameLayoutNDLayoutPtn(batch, m, n)、MakeFrameLayoutDNLayoutPtn(batch, m, n)、MakeFrameLayoutNDExtLayoutPtn(batch, m, n)、MakeFrameLayoutDNExtLayoutPtn(batch, m, n)或MakeFrameLayoutNZLayoutPtn, DstType(batch, m, n)构造。搬运行为不传入quant或传入uint64_t类型的scalar量化参数时不涉及量化张量的Batch维度匹配。接口按源张量的Batch数量完成搬运scalar量化场景下所有Batch共用同一个量化参数auto l0c MakeTensor(MakeMemPtr(l0cAddr), MakeFrameLayoutNZLayoutPtn(batch, m, n)); auto dst MakeTensor(MakeMemPtr(dstAddr), MakeFrameLayoutNDExtLayoutPtn(batch, m, n)); auto atom MakeCopy(CopyL0C2GM{}).with(FixpipeParams{}); Copy(atom, dst, l0c); uint64_t quant 1; Copy(atom, dst, l0c, quant);传入Tensor API张量作为tensor量化参数时量化张量可以不带Batch维度也可以带Batch维度。不带Batch维度表示所有Batch共用同一份量化参数带Batch维度表示每个Batch使用各自的量化参数此时源张量、目的张量和量化张量都需要带Batch维度。量化张量不带Batch维度时接口复用同一份量化参数完成batch搬运auto quant MakeTensor(MakeMemPtr(quantAddr), MakeFrameLayoutNDExtLayoutPtn(1, n)); auto atom MakeCopy(CopyL0C2GM{}).with(FixpipeParams{}); Copy(atom, dst, l0c, quant);量化张量带Batch维度时不能通过一条Fixpipe指令完成全部Batch搬运。接口会按Batch执行for循环逐Batch使用对应的量化参数完成搬运auto quant MakeTensor(MakeMemPtr(quantAddr), MakeFrameLayoutNDExtLayoutPtn(batch, 1, n)); auto atom MakeCopy(CopyL0C2GM{}).with(FixpipeParams{}); Copy(atom, dst, l0c, quant);【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言原生支持C和C标准规范主要由类库和语言扩展层构成提供多层级API满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考