SetOrgShape【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言原生支持C和C标准规范主要由类库和语言扩展层构成提供多层级API满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit产品支持情况产品是否支持Ascend 950PR/Ascend 950DT√Atlas A3 训练系列产品 / Atlas A3 推理系列产品√Atlas A2 训练系列产品 / Atlas A2 推理系列产品√Atlas 200I/500 A2 推理产品√Atlas 推理系列产品 AI Core√Atlas 推理系列产品 Vector CorexAtlas 训练系列产品xKirin X90√功能说明设置Matmul计算原始完整的形状M、N、K单位为元素个数。用于运行时修改shape比如复用同一个Matmul对象从不同的矩阵块取数据计算。函数原型__aicore__ inline void SetOrgShape(int orgM, int orgN, int orgK)__aicore__ inline void SetOrgShape(int orgM, int orgN, int orgKa, int orgKb, int orgKc 0)参数说明表 1参数说明参数名输入/输出描述orgM输入设置原始完整的形状M大小单位为元素。对于Ascend 950PR/Ascend 950DT在使用MDL模板创建的Matmul对象调用本接口时该参数用于设置GM或L1上完整的形状M大小单位为元素。orgN输入设置原始完整的形状N大小单位为元素。对于Ascend 950PR/Ascend 950DT在使用MDL模板创建的Matmul对象调用本接口时该参数用于设置GM或L1上完整的形状N大小单位为元素。orgK输入设置原始完整的形状K大小单位为元素。原始完整形状KaKb时可设置。对于Ascend 950PR/Ascend 950DT在使用MDL模板创建的Matmul对象调用本接口时该参数用于设置GM或L1上完整的形状K大小单位为元素。原始完整形状KaKb时可设置。orgKa输入设置矩阵A原始完整的形状Ka大小单位为元素。对于Ascend 950PR/Ascend 950DT在使用MDL模板创建的Matmul对象调用本接口时该参数用于设置GM或L1上完整的形状Ka大小单位为元素。orgKb输入设置矩阵B原始完整的形状Kb大小单位为元素。对于Ascend 950PR/Ascend 950DT在使用MDL模板创建的Matmul对象调用本接口时该参数用于设置GM或L1上完整的形状Kb大小单位为元素。orgKc输入设置输出C矩阵的N单位为元素。需要输入B矩阵的N和输出C矩阵的N不一样时可设置默认为0即使用B矩阵的N不进行修改。[!CAUTION]注意对于Ascend 950PR/Ascend 950DT上使用MDL模板创建的Matmul对象L1上数据的形状与Tiling侧接口SetOrgShape中的orgMIn/orgNIn/orgKIn/orgKaIn/orgKbIn一致时不必须调用此接口。对于Ascend 950PR/Ascend 950DT上使用MDL模板创建的Matmul对象L1上数据的形状与Tiling侧接口SetOrgShape中的orgMIn/orgNIn/orgKIn/orgKaIn/orgKbIn不一致时必须调用本接口指定GM/L1上的orgM/orgN/orgK/orgKa/orgKb。 例如使用MDL模板时输入矩阵A在L1、输入矩阵B在GM的场景L1上A的形状大小与Tiling侧原始的orgMIn/orgKIn/orgKaIn不一致时调用SetOrgShape(orgM, orgN, orgK)/SetOrgShape(orgM, orgN, orgKa, orgKb)接口指定L1上A矩阵相关参数orgM/orgK/orgKa。返回值说明无约束说明本接口需要在SetTensorA接口、SetTensorB接口、SetBias接口及SetSingleShape接口前调用。调用示例设置矩阵原始完整的形状REGIST_MATMUL_OBJ(pipe, GetSysWorkSpacePtr(), mm, tiling); mm.SetTensorA(gm_a); mm.SetTensorB(gm_b); mm.SetBias(gm_bias); mm.IterateAll(gm_c); // 复用mm对象 mm.SetOrgShape(orgM, orgN, orgK); mm.SetTensorA(gm_a1); mm.SetTensorB(gm_b1); mm.SetBias(gm_bias1); mm.IterateAll(gm_c1);对于Ascend 950PR/Ascend 950DT上使用MDL模板的Matmul对象设置GM或L1上完整的形状REGIST_MATMUL_OBJ(pipe, GetSysWorkSpacePtr(), mm, tiling); for (int m 0; m mIter_; m) { for (int n 0; n nIter_; n) { for (int k 0; k kIter_; k) { // 复用mm指定A在L1和B在GM上的shape mm.SetOrgShape(alignedSingleM, tiling.N, alignedSingleK, tiling.Kb, tiling.N); mm.SetSingleShape(curBaseM, curBaseN, curBaseK); mm.SetTensorA(tscm_a[offset_a]); // Set aMatrix tscm input mm.SetTensorB(gm_b[offset_b]); mm.SetBias(gm_bias[offset_bias]); mm.Iterate(k ! 0); } matmulObj.GetTensorC(gm_c[offset_c]); } }【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言原生支持C和C标准规范主要由类库和语言扩展层构成提供多层级API满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考