SetDim【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言原生支持C和C标准规范主要由类库和语言扩展层构成提供多层级API满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit功能说明设置多核Matmul时参与运算的核数。不同场景下的设置规则如下纯Cube模式只有矩阵计算SetDim设置当前AI处理器可用的核数通过Tiling计算得到执行Matmul计算实际使用的核数实际使用的核数小于等于AI处理器可用的核数。SetBlockDim按照实际使用的核数由用户进行配置SetBlockDim加载的核全部用于Matmul API的计算。MIX模式包含矩阵计算和矢量计算分离模式Matmul API都是从AIV侧发起的调用Iterate计算时在AIV侧只会起到通知的作用通知AIC去做矩阵计算计算完成后AIC告知AIV计算完成在开发者层面感知的是AIV的核数SetDim设置为当前AI处理器可用的AIV核的数量通过Tiling计算得到实际使用的AIV核数。SetBlockDim设置为实际使用的AI CoreAIC、AIV组合的数量。例如SetDim设置为40表示可以使用40个AIV核发起多核Matmul运算Tiling计算得到实际使用的AIV核数是20。当前AI处理器的AIC:AIV为1:2则SetBlockDim设置为10表示实际使用10个AI CoreAIC AIV的组合。耦合模式SetDim设置当前AI处理器可用的核数通过Tiling计算得到实际使用的核数实际使用的核数小于等于AI处理器可用的核数。SetBlockDim按照实际使用的核数由用户进行配置SetBlockDim加载的核全部用于Matmul API的计算。函数原型int32_t SetDim(int32_t dim)参数说明表1参数说明参数名输入/输出描述dim输入多核Matmul tiling计算时可以使用的核数。注意MIX模式下该参数取值小于等于耦合模式下启动的AICore核数或者分离模式下启动的AIV核数。返回值说明-1表示设置失败 0表示设置成功。约束说明无调用示例auto ascendcPlatform platform_ascendc::PlatformAscendC(context-GetPlatformInfo()); matmul_tiling::MultiCoreMatmulTiling tiling(ascendcPlatform); tiling.SetDim(1); // 设置参与运算的核数 tiling.SetAType(matmul_tiling::TPosition::GM, matmul_tiling::CubeFormat::ND, matmul_tiling::DataType::DT_FLOAT16); tiling.SetBType(matmul_tiling::TPosition::GM, matmul_tiling::CubeFormat::ND, matmul_tiling::DataType::DT_FLOAT16); tiling.SetCType(matmul_tiling::TPosition::GM, matmul_tiling::CubeFormat::ND, matmul_tiling::DataType::DT_FLOAT); tiling.SetBiasType(matmul_tiling::TPosition::GM, matmul_tiling::CubeFormat::ND, matmul_tiling::DataType::DT_FLOAT); tiling.SetShape(1024, 1024, 1024); tiling.SetSingleShape(1024, 1024, 1024); tiling.SetOrgShape(1024, 1024, 1024); tiling.SetBias(true); tiling.SetBufferSpace(-1, -1, -1); optiling::TCubeTiling tilingData; int ret tiling.GetTiling(tilingData);【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言原生支持C和C标准规范主要由类库和语言扩展层构成提供多层级API满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考