当前位置: 首页 > news >正文

catlass ASWT策略说明

Adaptive Sliding Window Tiling策略说明

【免费下载链接】catlass本项目是CANN的算子模板库,提供NPU上高性能矩阵乘及其相关融合类算子模板样例。项目地址: https://gitcode.com/cann/catlass

ASWT(Adaptive Sliding Window Tiling)策略决定了基本块的分核情况和计算顺序。与Swizzle类似,ASWT采用了S形滑窗机制来提高L2缓存命中率、减小数据读取开销。特别地,当基本块总数无法均分给每一个AI Core时,ASWT会对剩余基本块进一步切分,使其尽可能平均分配给每一个AI Core,达到负载均衡。

下方展示了ASWT策略。图中每一个方块表示C矩阵的一个基本块,方块中的序号代表AI Core的编号(该示例中假设AI Core数量为20)。按照S形滑窗顺序将基本块依次分配给AI Core进行处理,最后还剩9个基本块,无法均分给20个AI Core。为使每一个AI Core尽可能负载均衡,提升数据并行效率,对剩余的9个基本块进行切分,使得切分后的块数(18块)至少能够分配给AI Core总数的一半以上。

适用场景

假设左矩阵shape为(m, k),右矩阵shape为(k, n),C矩阵上的基本块大小为(baseM, baseN),则基本块的总个数tileNum:

$$\mathrm{tileNum = Ceil(\mathrm{m, baseM}) * Ceil(n, baseN)}$$

当基本块个数无法均分给所有AI Core,且剩余基本块个数不足AI Core总数的一半,即:

$$ \mathrm{tileNum \space % \space coreNum <= \frac{coreNum}{2} }$$

其中,coreNum表示使用的AI Core总核数。

此时,采用ASWT分核策略对基本块进行切分,使其尽可能均匀地分配给更多的AI Core,能够提升数据并行效率。

性能收益

在使用相同的tileShape和数据类型情况下,使用ASWT相较于使用Swizzle,basic_matmul的性能对比如下表。

[M, N, K]basic_matmul_swizzlebasic_matmul_aswt加速比
[1024, 1024, 1024]14.95us15.08us0.99
[2048, 2048, 256]11.95us12.09us0.99
[2208, 2048, 512]22.07us18.65us1.18
[2208, 2048, 1024]38.15us30.51us1.25
[1024, 2368, 512]16.02us12.00us1.34
[1024, 2368, 1024]26.18us19.82us1.32
[1024, 2368, 2048]45.88us34.25us1.34

说明

  • basic_matmul_swizzle表示使用Swizzle策略的basic_matmul。
  • basic_matmul_aswt表示使用ASWT策略的basic_matmul。
  • L1TileShape: [256, 256, 128]
  • L0TileShape: [256, 256, 64]
  • 输入A、B矩阵的数据类型为half,输出C矩阵的数据类型为float。

【免费下载链接】catlass本项目是CANN的算子模板库,提供NPU上高性能矩阵乘及其相关融合类算子模板样例。项目地址: https://gitcode.com/cann/catlass

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

http://www.jsqmd.com/news/788712/

相关文章:

  • UVa 199 Partial Differential Equations
  • Sunshine自托管串流服务器:5大核心功能与跨平台部署指南
  • 2026年巴拿马移民定制公司推荐 - mypinpai
  • 利用cursor-profiles实现多开发环境隔离:原理、配置与实战
  • 实战指南:基于ArcGIS水文分析模块精准估算水库防洪库容
  • Sunshine游戏串流服务器:构建跨平台游戏体验的技术深度解析
  • 为什么越厉害的程序员,越不喜欢写注释?
  • 手把手教你用C语言写一个简易文件监控工具(基于Linux fanotify API)
  • 斐济移民价格贵吗? - mypinpai
  • 2026 天津婚纱摄影综合实力排名 |多维数据专业测评➕消费者决策指南 - charlieruizvin
  • 产品经理技能图谱:从T型到π型,构建结构化能力模型与实战指南
  • ArcMap数据驱动页面批量出图实战:从配置到PDF导出一站式指南
  • 从‘飞机大战’项目倒推:为了写游戏,我如何在Win10上搞定Python环境与pygame库?
  • 3分钟快速上手:Blender 3MF插件的完整使用指南
  • 避坑指南:OpenCV读取手机RTSP视频流卡顿、花屏?试试这3个优化参数
  • 营收创新高却裁员 20%:Cloudflare 用 AI Agent 告诉我们,替代已经开始了
  • 2026年适老化家具选购之靠谱品牌排名 - mypinpai
  • LaTeX交叉引用避坑指南:除了编译两次,你的VSCode设置里还藏着这些坑
  • 如何免费掌控AMD Ryzen处理器性能:SMUDebugTool完整使用指南
  • ARM架构CPACR_EL1与CPACRMASK_EL1寄存器详解与应用
  • 3分钟学会ncmdump:免费解锁网易云音乐NCM加密文件
  • 深入剖析java.sql.SQLException: Protocol violation的根源与实战修复
  • 照明展2026有哪些新技术?光亚法兰克福 - mypinpai
  • ANSYS Workbench流体渗透压力加载保姆级教程:从接触对设置到后处理结果查看
  • 深度实战:如何通过SMU Debug Tool实现AMD Ryzen处理器底层优化与精准调校
  • 如何在Linux上快速安装哔哩哔哩客户端:5分钟完成完整配置指南
  • NS-USBLoader完全指南:Switch文件传输、RCM注入与文件管理的终极解决方案
  • OK-WW:5大技术突破打造《鸣潮》全自动化智能游戏助手
  • 告别黑盒:用O-RAN RIC的xApp微服务架构,像搭乐高一样定制你的5G网络
  • 告别手动set/get!用QDataWidgetMapper在Qt中实现UI与数据的自动同步(附完整代码)