尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
AscendC Matmul Tiling使用说明
Matmul Tiling类使用说明【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言原生支持C和C标准规范主要由类库和语言扩展层构成提供多层级API满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkitAscend C提供一组Matmul Tiling API方便用户获取Matmul kernel计算时所需的Tiling参数。用户只需要传入A/B/C矩阵的Position位置、Format格式和DType数据类型等信息调用API接口即可获取到Init中TCubeTiling结构体中的相关参数。Matmul Tiling API分为Matmul单核Tiling接口、多核Tiling接口和BatchMatmul Tiling接口分别用于Matmul单核计算、多核计算和BatchMatmul计算场景。获取Tiling参数的流程如下创建一个单核Tiling对象或多核Tiling对象或BatchMatmul Tiling对象。设置A、B、C、Bias的参数类型信息M、N、Ka、Kb形状信息等。调用GetTiling接口获取Tiling信息。使用Matmul单核Tiling接口、多核Tiling接口和BatchMatmul Tiling接口获取Tiling参数的样例如下Matmul单核Tilingauto ascendcPlatform platform_ascendc::PlatformAscendC(context-GetPlatformInfo()); matmul_tiling::MatmulApiTiling tiling(ascendcPlatform); // 设置A、B、C、Bias矩阵Position、Format、DType信息 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); // 设置单核计算的M、N、K大小 tiling.SetOrgShape(1024, 1024, 1024); // 设置原始输入M、N、K大小单核Tiling与SetShape一致。 // 若Ka,Kb不等长时设置tiling.SetOrgShape(1024,1024, 1024, 1280) tiling.EnableBias(true); // 设置matmul计算包含bias tiling.SetBufferSpace(-1, -1, -1); // 设定允许使用的空间缺省使用该AI处理器所有空间 optiling::TCubeTiling tilingData; int64_t ret tiling.GetTiling(tilingData); // if ret -1, get tiling failedMatmul多核Tilingauto ascendcPlatform platform_ascendc::PlatformAscendC(context-GetPlatformInfo()); matmul_tiling::MultiCoreMatmulTiling tiling(ascendcPlatform); tiling.SetDim(1); // 设置参与计算的核数为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.EnableBias(true); tiling.SetBufferSpace(-1, -1, -1); // 设定允许使用的空间缺省使用该AI处理器所有空间 optiling::TCubeTiling tilingData; int64_t ret tiling.GetTiling(tilingData); // if ret -1, get tiling failedBatchMatmul Tilingauto ascendcPlatform platform_ascendc::PlatformAscendC(context-GetPlatformInfo()); matmul_tiling::BatchMatmulTiling bmmTiling(ascendcPlatform); bmmTiling.SetAType(matmul_tiling::TPosition::GM, matmul_tiling::CubeFormat::ND, matmul_tiling::DataType::DT_FLOAT16); bmmTiling.SetBType(matmul_tiling::TPosition::GM, matmul_tiling::CubeFormat::ND, matmul_tiling::DataType::DT_FLOAT16); bmmTiling.SetCType(matmul_tiling::TPosition::GM, matmul_tiling::CubeFormat::ND, matmul_tiling::DataType::DT_FLOAT); bmmTiling.SetBiasType(matmul_tiling::TPosition::GM, matmul_tiling::CubeFormat::ND, matmul_tiling::DataType::DT_FLOAT); bmmTiling.EnableBias(true); bmmTiling.SetShape(64, 48, 32); bmmTiling.SetSingleShape(64, 48, 32); bmmTiling.SetOrgShape(64, 48, 32); // Layout类型为NORMAL时,通过SetBatchInfoForNormal设置A、B、C矩阵的Layout轴信息 bmmTiling.SetBatchInfoForNormal(2, 2, 64, 48, 32); // Layout类型为BSNGD、SBNGD、BNGS1S2时,通过SetALayout、SetBLayout、SetCLayout设置A、B、C矩阵的Layout轴信息 // bmmTiling.SetALayout(3, 64, 2, 2, 32); // bmmTiling.SetBLayout(3, 32, 2, 2, 48); // bmmTiling.SetCLayout(3, 64, 2, 2, 48); bmmTiling.SetBatchNum(2); bmmTiling.SetBufferSpace(-1, -1, -1); // 设定允许使用的空间缺省使用该AI处理器所有空间 optiling::TCubeTiling tilingData; int64_t ret bmmTiling.GetTiling(tilingData); // if ret -1, get tiling failed接口列表如下表1MatmulApiTiling/MultiCoreMatmulTiling/BatchMatmulTiling共有接口列表接口功能SetAType设置A矩阵的位置数据格式数据类型是否转置等信息。SetBType设置B矩阵的位置数据格式数据类型是否转置等信息。SetCType设置C矩阵的位置数据格式数据类型等信息。SetDequantType设置反量化的模式。SetBiasType设置Bias的位置数据格式数据类型等信息。SetShape设置Matmul单次计算的形状singleM、singleN、singleK单位为元素个数。SetOrgShape设置Matmul计算时的原始完整的形状M、N、Ka、Kb单位为元素个数。SetALayout设置A矩阵的Layout轴信息。SetBLayout设置B矩阵的Layout轴信息。SetCLayout设置C矩阵的Layout轴信息。SetBatchInfoForNormal设置A/B矩阵的M/N/K轴信息以及A/B矩阵各自的Batch数。SetBatchNum设置多Batch计算的最大Batch数。EnableBias设置Bias是否参与运算。SetBias设置Bias是否参与运算。建议使用EnableBias接口。SetFixSplit设置固定的baseM、baseN、baseK单位为元素个数。SetBufferSpace设置Matmul计算时可用的L1/L0C/UB空间大小单位为字节。SetTraverse设置遍历方式M轴优先还是N轴优先。SetMadType设置是否开启HF32模式。当前版本暂不支持。SetSplitRange设置baseM/baseN/baseK的最大值和最小值。SetMatmulConfigParams自定义设置MatmulConfig参数。SetDoubleBuffer设置A/B/C/Bias是否开启double buffer功能以及是否需要做ND2NZ或者NZ2ND的转换。该接口为预留接口当前版本暂不支持。GetBaseM获取baseM值。GetBaseN获取baseN值。GetBaseK获取baseK值。GetTiling获取Tiling参数。表2MultiCoreMatmulTiling其他接口接口功能SetDim设置多核Matmul时可以参与运算的核数。SetSingleRange设置singleCoreM/singleCoreN/singleCoreK的最大值与最小值单位为元素个数。SetSingleShape设置Matmul单核计算的形状singleCoreM、singleCoreN、singleCoreK单位为元素个数。GetSingleShape获取计算后的singleCoreM/singleCoreN/singleCoreK。SetAlignSplit设置多核切分时singleCoreM/singleCoreN/singleCoreK的对齐值。GetCoreNum获得多核切分后使用的numBlocks。SetSplitK多核场景开启切K轴。建议使用EnableMultiCoreSplitK接口。EnableMultiCoreSplitK多核场景开启切K轴。表3BatchMatmulTiling其他接口接口功能GetCoreNum获得多核切分后使用的numBlocks。需要包含的头文件Matmul单核Tiling#include lib/matmul/matmul_tiling.hMatmul多核Tiling#include lib/matmul/bmm_tiling.hBatchMatmul Tiling#include lib/matmul/bmm_tiling.h【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言原生支持C和C标准规范主要由类库和语言扩展层构成提供多层级API满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED

相关推荐

CANN/asc-devkit等待批量迭代完成接口

CANN/asc-devkit等待批量迭代完成接口

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

📅 2026/10/31 7:11:58
Ubuntu 18.04 WiFi驱动问题排查与修复指南

Ubuntu 18.04 WiFi驱动问题排查与修复指南

1. Ubuntu 18.04 WiFi问题全面诊断指南 刚装完Ubuntu 18.04发现WiFi图标消失?这个问题我遇到过太多次了。作为从Ubuntu 16.04一路用过来的老用户,每次新装系统最头疼的就是无线网卡驱动问题。先别急着重装系统,跟着我一步步排查,9…

📅 2026/10/18 21:23:37
Python数据科学:从基础到实战的完整指南

Python数据科学:从基础到实战的完整指南

1. Python:从"Hello World"到数据之王的蜕变之路作为一名从业十余年的全栈开发者,我至今清晰地记得第一次用Python打印出"Hello World"时的场景——那短短两行代码背后,隐藏着一个足以改变职业生涯的生态宇宙。Python之所…

📅 2026/11/6 17:44:25
MORE NEWS

更多资讯

📰

初级低压电工证有效期官方回应:过期了不知道怎么复审延期怎么办?

初级低压电工证有效期官方回应:过期了不知道怎么复审延期怎么办? 证书过期了不知道怎么复审延期,你不是一个人。很多人拿到初级低压电工证后,以为一劳永逸,结果几年后突然发现证过期了,既不能执业,又不知道怎么处理,白白浪费了时间和机会。而官方回应…

📰

低压电工证航空港区考点多少钱?学历不高也能考,关键看这些

低压电工证航空港区考点多少钱?学历不高也能考,关键看这些 你是不是也经常听别人说“低压电工证航空港区考点多少钱”?又担心自己学历不高,根本报不上名?别急,听我这个干了十几年应急管理相关工作的老手给你说道说道。 其实, 低压电工证…

📰

特种工考证年龄报名入口与办理流程

特种工考证年龄报名入口与办理流程 之前考的证在外省能不能转过来?网上查询是很多学员最先想到的途径,但结果往往让人失望,因为很多地方的政策并不互通。特别是对于刚毕业的应届生来说,特种工考证年龄限制和报名流程都是绕不开的问题。今天就从商丘应届工…

📰

南充考电工证只考理论怎么转异地 2026河南最新政策来了

南充考电工证只考理论怎么转异地 2026河南最新政策来了 工地太忙根本没时间复习考试,特别是像你这样在河南水利工程一线的电工,每天忙得连轴转,还要抽时间准备电工证考试?2026年河南最新政策明确指出,部分地区电工证考试将 仅考理论…

📰

天津考电工证怎么考真实经历告诉你怎么转证和备考

天津考电工证怎么考真实经历告诉你怎么转证和备考 之前考的证在外省能不能转过来?这是很多在外地打工、想回老家发展的工友最关心的问题。我有个同事在河南济源干了七八年电工,去年想回天津发展,结果发现自己的电工证是河南的,转过来需要走流程,差点耽误…

📰

办电工证哪家合适在哪考?安阳中小施工企业负责人必看

办电工证哪家合适在哪考?安阳中小施工企业负责人必看 你是不是也这样? 不知道去哪报名怕被中介坑 ,看到“办电工证哪家合适”的信息五花八门,反而更迷茫了。特别是像你这种安阳中小施工企业的负责人,既要保证员工持证上岗,又要控制成本,稍有不慎就可…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬