CANN/asc-devkit平台块数计算函数
2026/7/18 10:15:14 网站建设 项目流程

CalcTschNumBlocks

【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C++标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit

功能说明

针对Cube、Vector分离模式,用于计算Cube、Vector融合算子的numBlocks。针对Vector/Cube融合计算的算子,启动时,按照AIV和AIC组合启动,numBlocks用于设置启动多少个组合执行,比如某款AI处理器上有40个Vector核+20个Cube核,一个组合是2个Vector和1个Cube核,建议设置为20,此时会启动20个组合,即40个Vector和20个Cube核。使用该接口可以自动获取合适的numBlocks值。

获取该值后,使用SetBlockDim进行numBlocks的设置。

函数原型

uint32_t CalcTschNumBlocks(uint32_t sliceNum, uint32_t aicCoreNum, uint32_t aivCoreNum) const

参数说明

参数

输入/输出

说明

sliceNum

输入

数据切分的份数。

aicCoreNum

输入

如果算子实现使用了矩阵计算API,请传入GetCoreNumAic返回的数量,否则传入0。

aivCoreNum

输入

如果算子实现使用了矢量计算API,请传入GetCoreNumAiv返回的数量,否则传入0。

返回值说明

返回用于底层任务调度的核数。

约束说明

调用示例

ge::graphStatus TilingXXX(gert::TilingContext* context) { auto ascendcPlatform = platform_ascendc::PlatformAscendC(context->GetPlatformInfo()); auto aicNum = ascendcPlatform.GetCoreNumAic(); auto aivNum = ascendcPlatform.GetCoreNumAiv(); // ..按照aivNum切分数据,并进行计算 uint32_t sliceNum = aivNum; context->SetBlockDim(ascendcPlatform.CalcTschNumBlocks(sliceNum, aicNum, aivNum)); return ret; }

【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C++标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询