AscendC Matmul对象注册 📅 2026/7/17 8:27:49 REGIST_MATMUL_OBJ【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言原生支持C和C标准规范主要由类库和语言扩展层构成提供多层级API满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit功能说明初始化Matmul对象。函数原型REGIST_MATMUL_OBJ(tpipe, workspace, ...)参数说明表1参数说明参数名输入/输出描述tpipe输入Tpipe对象。workspace输入系统workspace指针。...输入可变参数传入Matmul对象和与之对应的Tiling结构要求Tiling结构的数据类型为TCubeTiling结构。Tiling参数可以通过Host侧GetTiling接口获取并传递到kernel侧使用。返回值说明无约束说明在分离模式中本接口必须在InitBuffer接口前调用。在程序中最多支持定义4个Matmul对象。在Matmul的内部实现中使用了CrossCoreSetFlag.md)进行核间同步控制因此不建议开发者同时使用CrossCoreSetFlag和Matmul以避免核间同步标记flagId冲突的风险。Matmul高阶API内部占用的flagId范围与定义的Matmul对象数目相关。假设定义了N个Matmul对象则Matmul高阶API内部占用的flagId范围为[0, 2 * N - 1]。Matmul最多支持定义4个对象此时flagId占用范围为[0, 7]。当代码中只有一个Matmul对象时本接口可以不传入tiling参数通过Init接口单独传入tiling参数。当代码中有多个Matmul对象时必须满足Matmul对象与其tiling参数一一对应依次传入具体方式请参考调用示例。在分离模式中调用本接口后AIC核不会主动执行接口仅在AIV核执行到下述接口后才会触发AIC核的执行其他接口则不会在AIC核上执行。Matmul Kernel侧接口。GM与L1连续数据搬运(DataCopy)、GM与L1高维切分数据搬运(DataCopy)、GMToL1随路转换-ND2NZ搬运(DataCopy)。调用示例Tpipe pipe; // 推荐初始化单个matmul对象传入tiling参数 REGIST_MATMUL_OBJ(pipe, GetSysWorkSpacePtr(), mm, tiling); // 推荐初始化多个matmul对象传入对应的tiling参数 REGIST_MATMUL_OBJ(pipe, GetSysWorkSpacePtr(), mm1, mm1tiling, mm2, mm2tiling, mm3, mm3tiling, mm4, mm4tiling); // 初始化单个matmul对象未传入tiling参数。注意该场景下需要使用Init接口单独传入tiling参数。这种方式将matmul对象的初始化和tiling的设置分离比如Tiling可变的场景可通过这种方式多次对Tiling进行重新设置 REGIST_MATMUL_OBJ(pipe, GetSysWorkSpacePtr(), mm); mm.Init(tiling);【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言原生支持C和C标准规范主要由类库和语言扩展层构成提供多层级API满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考