TQueBind简介【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言原生支持C和C标准规范主要由类库和语言扩展层构成提供多层级API满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkitTQueBind绑定源逻辑位置和目的逻辑位置根据源位置和目的位置来确定内存分配的位置 、插入对应的同步事件帮助开发者解决内存分配和管理、同步等问题。Tque是TQueBind的简化模式。通常情况下开发者使用TQue进行编程TQueBind对外提供一些特殊数据通路的内存管理和同步控制涉及这些通路时可以直接使用TQueBind。如下图的数据通路示意图所示红色线条和蓝色线条的通路可通过TQueBind定义表达蓝色线条的通路可通过TQue进行简化表达。表1TQueBind和TQue对于数据通路的表达数据通路TQueBind定义TQue定义GM-VECINTQueBindTPosition::GM, TPosition::VECIN, 1TQueTPosition::VECIN, 1VECOUT-GMTQueBindTPosition::VECOUT, TPosition::GM, 1TQueTPosition::VECOUT, 1VECIN-VECOUTTQueBindTPosition::VECIN, TPosition::VECOUT, 1-GM-A1TQueBindTPosition::GM, TPosition::A1, 1TQueTPosition::A1, 1GM-B1TQueBindTPosition::GM, TPosition::B1, 1TQueTPosition::B1, 1GM-C1TQueBindTPosition::GM, TPosition::C1, 1TQueTPosition::C1, 1A1-A2TQueBindTPosition::A1, TPosition::A2, 1TQueTPosition::A2, 1B1-B2TQueBindTPosition::B1, TPosition::B2, 1TQueTPosition::B2, 1C1-C2TQueBindTPosition::C1, TPosition::C2, 1TQueTPosition::C2, 1CO1-CO2TQueBindTPosition::CO1, TPosition::CO2, 1TQueTPosition::CO1, 1CO2-GMTQueBindTPosition::CO2, TPosition::GM, 1TQueTPosition::CO2, 1VECOUT-A1/B1/C1TQueBindTPosition::VECOUT, TPosition::A1, 1 TQueBindTPosition::VECOUT, TPosition::B1, 1 TQueBindTPosition::VECOUT, TPosition::C1, 1-CO2-VECINTQueBindTPosition::CO2, TPosition::VECIN, 1-[!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模板参数说明参数名描述src源逻辑位置支持的TPosition可以为VECIN、VECOUT、A1、A2、B1、B2、CO1、CO2。关于TPosition的具体介绍请参考TPosition。支持的src和dst组合请参考表1。dst目的逻辑位置TPosition可以为VECIN、VECOUT、A1、A2、B1、B2、CO1、CO2。depthTQue的深度一般不超过4。mask如果用户在某一个Que上数据搬运的时候需要做转换可以设置为0或1。一般不需要用户配置默认为0。设置为0代表数据格式从ND转换为NZ目前仅支持TPosition为A1或B1。【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言原生支持C和C标准规范主要由类库和语言扩展层构成提供多层级API满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考