CANN/asc-devkit TQueBind简介
TQueBind简介
【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C++标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit
TQueBind绑定源逻辑位置和目的逻辑位置,根据源位置和目的位置,来确定内存分配的位置 、插入对应的同步事件,帮助开发者解决内存分配和管理、同步等问题。Tque是TQueBind的简化模式。通常情况下开发者使用TQue进行编程,TQueBind对外提供一些特殊数据通路的内存管理和同步控制,涉及这些通路时可以直接使用TQueBind。
如下图的数据通路示意图所示,红色线条和蓝色线条的通路可通过TQueBind定义表达,蓝色线条的通路可通过TQue进行简化表达。
表1TQueBind和TQue对于数据通路的表达
[!NOTE]说明 上述表格中的Cube相关数据通路建议使用Cube高阶API(如Matmul)实现,直接使用TQueBind控制会相对复杂。
下面通过两个具体的示例展示了矢量编程场景下TQueBind的使用方法:
如下的编程范式示例,图中的两个队列分别绑定的是GM VECIN和VECOUT GM。
如果不需要进行Vector计算,比如仅需要做格式随路转换等场景,可对上述流程进行优化,对VECIN和VECOUT进行绑定,绑定的效果可以实现输入输出使用相同buffer,实现double buffer。
模板参数
template <TPosition src, TPosition dst, int32_t depth, auto mask = 0> class TQueBind {...};表2模板参数说明
【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C++标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
