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

CANNBot Triton-Ascend Amin归约原子操作优化案例

【免费下载链接】cannbot-skillsCANNBot 是面向 CANN 开发的用于提升开发效率的系列智能体本仓库为其提供可复用的 Skills 模块。项目地址: https://gitcode.com/cann/cannbot-skillsname: triton-ascend-case-reduction-amin-atomic description: 原子操作归约amin优化非reduce轴很小时将reduce轴映射多核提供循环内/外两种原子操作方案减少存储vs减少竞争通过二次切分计算重组提升性能适用于MN如16×262144的极端shape比例场景 category: example version: 1.0.0 metadata: backend: ascend dsl: triton-ascend hardware: Atlas A2, Atlas A3Amin 归约原子操作优化案例任务特征数据尺寸(16, 262144)非reduce轴很小reduce轴很大策略将reduce轴映射到多核通过原子操作实现跨线程块归约优化 1切分策略调整# 简单方式非reduce轴映射多核 grid lambda meta: (triton.cdiv(M, meta[BLOCK_SIZE_M]),) # 错误优化方式reduce轴映射多核 grid lambda meta: (triton.cdiv(N, meta[BLOCK_SIZE_N]),) # Kernel内对列进行二次切分 for n_start in range(0, BLOCK_SIZE_N, SUB_BLOCK_SIZE_N): n_offsets pid * BLOCK_SIZE_N n_start tl.arange(0, SUB_BLOCK_SIZE_N)优化内容调整切分策略由非reduce轴映射多核调整为reduce轴映射多核为了不超过硬件缓存kernel内对列进行二次切分优化 2计算重组# 简单方式循环内多次归约 row_min float(inf) for n_start in range(0, BLOCK_SIZE_N, SUB_BLOCK_SIZE_N): 错误curr_min tl.min(data_block, 1) row_min tl.minimum(curr_min, row_min) # 正确优化方式维护矩阵结构 curr_min tl.full((BLOCK_SIZE_M, SUB_BLOCK_SIZE_N), float(inf), dtypetl.float32) for n_start in range(0, BLOCK_SIZE_N, SUB_BLOCK_SIZE_N): curr_min tl.minimum(data_block, curr_min) row_min tl.min(curr_min, 1)优化内容利用curr_min保持矩阵结构维护中间结果将多次归约合并为一次归约减少归约次数优化 3原子操作两种方案方案一循环内进行原子操作for m_start in range(0, M, BLOCK_SIZE_M): m_offsets m_start tl.arange(0, BLOCK_SIZE_M) mmask m_offsets M curr_min tl.full((BLOCK_SIZE_M, SUB_BLOCK_SIZE_N), float(inf), dtypetl.float32) for n_start in range(0, BLOCK_SIZE_N, SUB_BLOCK_SIZE_N): n_offsets pid * BLOCK_SIZE_N n_start tl.arange(0, SUB_BLOCK_SIZE_N) nmask n_offsets N mask (mmask[:, None]) (nmask[None, :]) block_ptrs in_ptr0 m_offsets[:,None] * in_stride0 n_offsets[None,:] * in_stride1 data_block tl.load(block_ptrs, maskmask, otherfloat(inf)) curr_min tl.minimum(data_block, curr_min) row_min tl.min(curr_min, 1) output_ptrs out_ptr0 m_offsets * out_stride0 tl.atomic_min(output_ptrs, row_min, maskmmask) # 每块立即原子操作特点减少了中间存储但增加了原子操作频率方案二循环外进行原子操作all_row_min tl.full((M,), float(inf), dtypetl.float32) # 预分配完整数组 for m_start in range(0, M, BLOCK_SIZE_M): m_offsets m_start tl.arange(0, BLOCK_SIZE_M) mmask m_offsets M curr_min tl.full((BLOCK_SIZE_M, SUB_BLOCK_SIZE_N), float(inf), dtypetl.float32) for n_start in range(0, BLOCK_SIZE_N, SUB_BLOCK_SIZE_N): n_offsets pid * BLOCK_SIZE_N n_start tl.arange(0, SUB_BLOCK_SIZE_N) nmask n_offsets N mask (mmask[:, None]) (nmask[None, :]) block_ptrs in_ptr0 m_offsets[:,None] * in_stride0 n_offsets[None,:] * in_stride1 data_block tl.load(block_ptrs, maskmask, otherfloat(inf)) curr_min tl.minimum(data_block, curr_min) row_min tl.min(curr_min, 1) curr_block_size_m tl.minimum(BLOCK_SIZE_M, M - m_start) all_row_min tl.insert_slice(all_row_min, row_min, [m_start], [curr_block_size_m], [1]) # 暂存中间结果 output_ptrs out_ptr0 tl.arange(0, M) * out_stride0 tl.atomic_min(output_ptrs, all_row_min) # 最后统一原子操作特点通过集中执行原子操作减少了竞争需要额外存储空间适合大规模数据优化 4配置# AI core40 # grid3240, UB用满 triton.Config({BLOCK_SIZE_M: 8, BLOCK_SIZE_N: 8192, SUB_BLOCK_SIZE_N: 1024}) # M切分较小UB用满 triton.Config({BLOCK_SIZE_M: 16, BLOCK_SIZE_N: 8192, SUB_BLOCK_SIZE_N: 512}) # M切分调大至16N的SUB切分调小至512防止超UB优化内容切分能被对应shape整除Grid数尽量大但不超过AI coreBLOCK_SIZE_N8192使grid32在UB用满的前提下进行kernel内切分大小调整总结非reduce轴很小、reduce轴很大时将reduce轴映射到多核并结合原子操作两种原子操作方案各有优劣方案一减少存储但原子操作频繁方案二集中原子操作但需额外空间确定核数后若超过硬件缓存可以考虑二次切分调整切分和核数配置尽量保证在不超出UB的前提下尽量用满UB【免费下载链接】cannbot-skillsCANNBot 是面向 CANN 开发的用于提升开发效率的系列智能体本仓库为其提供可复用的 Skills 模块。项目地址: https://gitcode.com/cann/cannbot-skills创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关文章:

CANNBot Triton-Ascend Amin归约原子操作优化案例

【免费下载链接】cannbot-skills CANNBot 是面向 CANN 开发的用于提升开发效率的系列智能体,本仓库为其提供可复用的 Skills 模块。 项目地址: https://gitcode.com/cann/cannbot-skills name: triton-ascend-case-reduction-amin-atomic description: "…...

5分钟快速搭建Windows RTMP流媒体服务器:新手完整指南

5分钟快速搭建Windows RTMP流媒体服务器:新手完整指南 【免费下载链接】nginx-rtmp-win32 Nginx-rtmp-module Windows builds. 项目地址: https://gitcode.com/gh_mirrors/ng/nginx-rtmp-win32 想要在Windows系统上搭建自己的直播服务器吗?nginx…...

终于有人说清楚经营分析会怎么开了!一篇看懂经营分析会全流程

各位老板有没有想过,为什么你的经营分析会越开越多?有的企业月月开、周周开,甚至恨不得天天开。会一多,人就麻木了,翻来覆去讲同样的数据、追同样的问题,真正该花时间去解决的业务卡点,反而没人…...

在Taotoken模型广场根据任务需求与预算快速选型实践

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 在Taotoken模型广场根据任务需求与预算快速选型实践 面对众多大模型,如何为自己的项目选择一个既满足需求又符合预算的…...

7天职场内耗清零打卡计划

7天职场内耗清零打卡计划(极简好坚持)每天 3 件小事,不累不费脑,7 天稳住心态第一天:断胡思乱想别人随口一句话,当场听完就翻篇,绝不反复琢磨上班只盯自己手头事,不偷看别人忙不忙、…...

口碑最好的AI论文工具推荐(从文献整理到论文成稿全流程)适合全体毕业生

论文选题没思路、文献检索耗时长、开题报告写不出、初稿逻辑混乱、查重反复修改、答辩PPT难打磨?面对论文写作的重重难关,作为学术新手、应届生或本科硕士毕业生,你是否也感到力不从心?论文流程复杂、环节繁多、上手门槛高&#x…...

slambook-en学习路线图:从初学者到专家的10个关键步骤

slambook-en学习路线图:从初学者到专家的10个关键步骤 【免费下载链接】slambook-en The English version of 14 lectures on visual SLAM. 项目地址: https://gitcode.com/gh_mirrors/sl/slambook-en 想要掌握视觉SLAM技术但不知从何开始?&#…...

毕业论文难写?2026年AI写作辅助网站排行榜权威发布,轻松定稿不是梦!

写论文效率低、熬夜赶稿、查重不过关?别慌!2026 年最新 AI 论文写作工具合集来了,覆盖选题、大纲、初稿、润色、降重、格式、文献引用全流程,帮你精准匹配最适合的学术助手,彻底告别论文内耗!🏆…...

利用Taotoken模型广场为AIGC应用选择性价比最优的文本生成模型

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 利用Taotoken模型广场为AIGC应用选择性价比最优的文本生成模型 对于AIGC应用开发者而言,文本生成模型的选择直接影响着…...

10分钟终极指南:使用Chronos时间序列预测模型快速上手

10分钟终极指南:使用Chronos时间序列预测模型快速上手 【免费下载链接】chronos-forecasting Chronos: Pretrained Models for Time Series Forecasting 项目地址: https://gitcode.com/GitHub_Trending/ch/chronos-forecasting 想要在几分钟内完成专业级的时…...

Wannakey终极指南:免费恢复WannaCry加密文件的专业内存密钥恢复工具

Wannakey终极指南:免费恢复WannaCry加密文件的专业内存密钥恢复工具 【免费下载链接】wannakey Wannacry in-memory key recovery 项目地址: https://gitcode.com/gh_mirrors/wa/wannakey Wannakey是一款专为恢复WannaCry勒索软件加密文件而设计的免费开源工…...

如何快速掌握UESave:3个高效编辑游戏存档的秘诀

如何快速掌握UESave:3个高效编辑游戏存档的秘诀 【免费下载链接】uesave Rust library and CLI to read and write Unreal Engine save files 项目地址: https://gitcode.com/gh_mirrors/ue/uesave 你是否曾因游戏存档损坏而失去珍贵的游戏进度?是…...

HTML到DOCX格式转换的技术实现与解决方案

HTML到DOCX格式转换的技术实现与解决方案 【免费下载链接】html-to-docx HTML to DOCX converter 项目地址: https://gitcode.com/gh_mirrors/ht/html-to-docx 在Web应用开发和企业文档处理流程中,HTML内容与Office文档格式之间的转换一直是一个技术难点。传…...

如何让老旧Windows系统重新获得安全更新:Legacy Update完整解决方案

如何让老旧Windows系统重新获得安全更新:Legacy Update完整解决方案 【免费下载链接】LegacyUpdate Get back online, activate, and install updates on your legacy Windows PC 项目地址: https://gitcode.com/gh_mirrors/le/LegacyUpdate 还在为Windows X…...

抓包科普小知识

1、什么是抓包 抓包就是将网络传输发送与接收的数据包进行截获、重发、编辑、转存等操作,通过抓包可以: 分析网络问思路就是设置一个中间人进程负责抓包,每次目标进程之间的会话都先与中间人进程通信,再进行转发。业务分析分析网…...

Ladybug终极指南:专业气象数据分析与可视化工具

Ladybug终极指南:专业气象数据分析与可视化工具 【免费下载链接】ladybug 🐞 Core ladybug library for weather data analysis and visualization 项目地址: https://gitcode.com/gh_mirrors/lad/ladybug Ladybug是一个功能强大的Python库&#…...

缺失数据可视化图表开发实战|Highcharts创建人员出生统计面积图表示例

完整可运行代码<!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>面积图 - 男孩姓名出生人数</t…...

Rufus系统兼容性架构升级:Windows 7支持终止的技术决策分析

Rufus系统兼容性架构升级&#xff1a;Windows 7支持终止的技术决策分析 【免费下载链接】rufus The Reliable USB Formatting Utility 项目地址: https://gitcode.com/GitHub_Trending/ru/rufus Rufus作为业界领先的USB启动盘制作工具&#xff0c;在v4.5版本中做出了终止…...

11 极物科技 JetLinks MQTT 直连设备功能调用完整流程与 Python 实现

1. 前言 JetLinks作为开源的IoT物联网平台&#xff0c;提供了完善的设备接入、物模型管理、功能调用等核心能力&#xff0c;其中MQTT协议是设备与平台直连的主流方式。本次测试以继电器设备为核心测试载体&#xff0c;继电器具备明确的“通/断”二元状态&#xff0c;且状态变更…...

【更新 v 2.7.5 版本】桌面版 Open Claw 本地一键部署指南

✨ 核心亮点 零代码门槛&#xff5c;全程可视化&#xff5c;无需手动配环境&#xff5c;内置所有依赖&#xff5c;28 万 Tokens 额度 &#x1f517; 下载地址 https://xiake.yun/api/download/package/16?promoCodeIV8E496E2F7A &#x1f4dd; 前言 开源圈热门的「数字员…...

零代码自动化终极指南:用taskt在5分钟内解放你的双手

零代码自动化终极指南&#xff1a;用taskt在5分钟内解放你的双手 【免费下载链接】taskt taskt (pronounced tasked and formely sharpRPA) is free and open-source robotic process automation (rpa) built in C# powered by the .NET Framework 项目地址: https://gitcode…...

【正式 v 2.7.5 版本】Windows 系统 Open Claw 搭建使用教程

✨ 核心亮点 零代码门槛&#xff5c;全程可视化&#xff5c;无需手动配环境&#xff5c;内置所有依赖&#xff5c;28 万 Tokens 额度 &#x1f517; 下载地址 https://xiake.yun/api/download/package/16?promoCodeIV8E496E2F7A &#x1f4dd; 前言 开源圈热门的「数字员…...

macOS Homebrew 安装 MySQL

一、安装 MySQL1. 安装完整版 MySQL&#xff08;服务端全套客户端&#xff09;# 安装最新版 MySQL brew install mysql说明&#xff1a;brew install mysql 包含服务端 mysqld 命令行客户端 mysql自带工具&#xff1a;mysql、mysqldump、mysqladmin、mysqlshow 等常用运维工具…...

【Python range() 函数详解】

文章目录Python range() 函数详解 ✨什么是range()函数&#xff1f; &#x1f914;range()的参数和用法 &#x1f4ca;单参数形式&#xff1a;range(stop)双参数形式&#xff1a;range(start, stop)三参数形式&#xff1a;range(start, stop, step)range()对象的特点 &#x1f…...

OpenClaw Windows一键部署包简体中文版下载

OpenClaw&#xff08;小龙虾&#xff09;Windows 一键部署保姆级教程 | 10分钟养出你的数字员工&#xff08;2026最新版&#xff09; 前言&#xff1a;2026年爆火的开源AI智能体OpenClaw&#xff08;昵称小龙虾&#xff09;&#xff0c;GitHub星标超28万&#xff0c;凭“本地运…...

如何快速配置Live Server Web Extension:提升开发效率的完整指南

如何快速配置Live Server Web Extension&#xff1a;提升开发效率的完整指南 【免费下载链接】live-server-web-extension It makes your existing server live. This is a browser extension that helps you to live reload feature for dynamic content (PHP, Node.js, ASP.N…...

DiffSinger歌声合成:3大技术革新与完整部署指南

DiffSinger歌声合成&#xff1a;3大技术革新与完整部署指南 【免费下载链接】DiffSinger An advanced singing voice synthesis system with high fidelity, expressiveness, controllability and flexibility based on DiffSinger: Singing Voice Synthesis via Shallow Diffu…...

3步解锁B站缓存视频:m4s-converter让你的离线收藏永不过期

3步解锁B站缓存视频&#xff1a;m4s-converter让你的离线收藏永不过期 【免费下载链接】m4s-converter 一个跨平台小工具&#xff0c;将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 当B站视频突然下架&#x…...

Agent生产费用智能管控与超支预警功能配置:2026企业级ROI重塑指南

在2026年5月的当下&#xff0c;全球人工智能产业已从“大模型参数竞赛”全面转向“智能体&#xff08;Agent&#xff09;价值落地阶段”。根据2026年5月21日最新的行业数据显示&#xff0c;企业对Agent的投入已占到其IT预算的35%以上。然而&#xff0c;随着Agent系统从实验性De…...

如何在Windows系统中创建虚拟游戏手柄?vJoy开源项目完全指南

如何在Windows系统中创建虚拟游戏手柄&#xff1f;vJoy开源项目完全指南 【免费下载链接】vJoy Virtual Joystick 项目地址: https://gitcode.com/gh_mirrors/vj/vJoy 你是否曾因缺少物理游戏手柄而无法体验某些经典游戏&#xff1f;或者需要为专业软件创建自定义控制方…...