- 博客(17)
- 收藏
- 关注
原创 Ascend C 融合算子设计与实现VV+CV
摘要: 融合算子是通过整合多个基础算子形成的单一计算单元,可消除冗余数据搬移,提升深度学习模型效率。昇腾架构下的融合算子分为VV融合(Vector单元间)和CV融合(Cube与Vector单元间)。VV融合通过减少中间数据读写降低耗时,CV融合则实现跨单元流水线并行计算。实验仿真显示,VV融合可显著减少执行时间,CV融合通过分块流水线并行大幅提升矩阵运算效率。文中以平方差融合算子为例,详细介绍了Host侧的分片参数定义和Kernel侧的计算实现,展示了完整的开发流程。融合算子技术是昇腾AI芯片性能优化的核心
2026-08-05 20:23:19
285
原创 Ascend C 算子工程实战(二)——VV融合SquareDiff算子全流程落地
摘要 本文以昇腾AI芯片上的自定义算子开发为核心,聚焦二元向量融合算子$(x+y)(x-y)$(SquareDiff)的完整实现过程。研究基于CANN 9.0.0开发体系,系统性地阐述了从IR定义、工程自动化生成、Host侧规则开发到AICore核函数实现的完整链路。重点剖析了Host侧在算子注册、张量推导和硬件分片调度中的关键作用,纠正了"Host仅做算子注册"的常见认知偏差。通过分层开发模式(通用底座代码与算子专属业务代码分离),建立了标准化的开发范式,为昇腾AI芯片上的自定义算子开发提供了可复用的工程
2026-08-05 16:09:25
485
原创 Ascend C 算子工程实战(一):Matmul 自定义算子全流程开发教程
本文详细介绍了昇腾算子工程中Matmul自定义算子的全流程开发实践。主要内容包括: 算子工程开发概述 分析初学者三大学习难点:知识体系割裂、效率低下、调试消耗 提出分层学习方案:基础概念→完整案例→源码解析→算法拓展 Matmul算子实现详解 Host侧开发:原型注册、形状推导、分片数据结构 Tiling分片:基于UB内存限制的多维切分算法 AICore内核:Matmul高阶API封装与分块计算 配套核心算法 大数乘法溢出处理:二进制快速乘与__int128方案 矩阵开关问题:状态压缩与贪心搜索降维 工程复
2026-08-02 23:39:35
424
原创 Ascend C 算子实战(一)|二元逐元素算子 AddCustom + SubCustom 完整开发指南
全系列算子通用执行链路:初始化设备 → 创建异步任务流 <<<>>> 启动核函数 → stream同步等待计算结束 → 销毁流/重置设备/释放ACL后续 Add、Sub 算子仅在此基础上增加张量内存分配、分片参数传递、GM 与 LocalTensor 数据搬运、核内数学计算模块。BUFFER_NUM 代表队列内部缓存的 LocalTensor 数量,取值 2 实现双缓冲流水线:一块本地缓存正在执行计算,另一块同步从 GM 搬运下一批数据,掩盖内存拷贝延迟,最大化 AICore 算力利用率;
2026-08-01 17:34:04
352
原创 Ascend C 算子实战(二)|SigmoidCustom 逐元素激活算子完整开发指南
Init分片初始化 → Process循环调度 → CopyIn/Compute/CopyOut,单输入 / 双输入算子框架完全通用,仅增减输入队列与计算 API;掌握 Ascend C 基础数学算子串联:Muls 标量乘、Exp 指数、Adds 标量加、Duplicate 填充、Div 逐元素除法;理清 Host-Device 内存交互完整链路:锁页内存申请、显存分配、双向拷贝、同步等待、资源释放全流程;搭建算子标准验证体系:CPU 真值函数 + 批量打印对比函数,快速定位算子精度错误;
2026-08-01 17:23:01
357
原创 古法编程实战|从零手写Ascend C 加减自定义算子(Add/Sub/Div)
本文介绍了Ascend C自定义算子开发的入门教程,通过实现逐元素加法算子AddCustom,详解了开发流程。主要内容包括: 基础环境搭建 展示最简HelloWorld核函数示例 介绍设备初始化、流调度、资源释放的基础流程 加法算子实现 定义分片参数结构体管理数据分布 采用面向对象思想封装KernelAdd类 实现Init初始化、Process核心流程 完成CopyIn、Compute、CopyOut三个关键子模块 开发模式 遵循"Host调度+Kernel计算"的分层架构 使用流水线技术提升并行效率 提供
2026-08-01 02:16:21
265
原创 So simple and Innocent
这篇文章摘要如下: 本文介绍了在Ascend平台上的两种核函数编程实例。第一部分展示了一个简单的"Hi Ascend"核函数,演示了基本设备初始化和核函数调用流程。第二部分详细讲解了一个逐元素加法核函数实现,包含完整代码结构:定义了Buffer数量、Tiling数据结构、KernelAdd类及其成员函数(Init初始化、Process处理流程、CopyIn数据加载、Compute计算、CopyOut结果回写)。最后提供了Host侧调用示例,包括内存分配、数据传输和核函数启动流程。代码展示了AscendC编程
2026-08-01 01:46:52
256
原创 昇腾NPU算子开发实战:逐元素除法算子实现
本文围绕昇腾AscendC算子开发展开技术复盘与规划。作者首先分析社区任务进展,指出当前CustomDiv算子开发中的核心难点在于底层知识储备不足,并详细拆解了逐元素除法算子的实现逻辑:从张量计算规则到昇腾硬件架构(GM显存、AICore并行计算),最终呈现完整代码结构,包含Host/Device分层设计、双缓冲优化等关键技术。通过本次实践,作者确立以源码精读为核心的学习方法,并制定短期算子开发与长期异构计算的发展路径。最后反思指出,技术成长需要主动争取科研竞赛机会,同时强调社区贡献对自身能力的锻造价值。
2026-07-30 04:15:39
209
原创 Like a little flower blooming in the home
文章摘要:本文记录了一名开发者在处理昇腾NPU逐元素除法算子开发过程中的思考与实践。主要内容包括:1)对Community任务收尾工作的安排;2)深入解析AscendC源码中GM_ADDR类型的作用(NPU显存指针)和Runtime开发要点;3)详细拆解逐元素除法算子的实现逻辑,包含初始化、计算流水线和数据搬运过程;4)分享从看不懂到理解昇腾源码的学习心得,强调持续实践的重要性。文章通过具体代码示例(如KernelDiv类实现)展现了昇腾异构计算的开发范式,并讨论了技术成长中自我驱动与外部机会的关系。
2026-07-30 04:10:09
187
原创 aclnnRoll 开发工作日志:任务梳理与自我复盘
本文是一篇技术开发者的自我反思录,文章分为三部分:第一部分记录内心挣扎,作者坦言长期处于方向迷茫与产出焦虑中,既想满足他人期待又恐自我设限,工具批判转为自我反思;第二部分聚焦昇腾算子开发的技术攻坚,详述aclnnRoll算子复数适配等具体任务,强调赛事沉淀与工程规范;第三部分探讨AI时代的人类价值,提出"局部创新与自主洞察"是区别于AI的核心竞争力。全文呈现技术人在理想与现实夹缝中的成长轨迹,既有开发文档式的严谨,又充满对存在意义的哲学叩问。(149字)
2026-07-29 03:54:38
437
原创 A misty moon (mising moore)- Torches]
摘要:作者在自我反思中表达了对学术产出不足的焦虑,既渴望突破又受限于能力与资源。文中探讨了AI时代人类思考的价值所在,认为创新性突破仍是人类优势,同时记录了参与昇腾算子开发等具体技术任务时遇到的挑战,包括对复杂数据类型支持的技术难题。作者也坦承在多个项目间切换导致注意力分散的困境,强调专注与过程记录的重要性,并反思了在师生互动中的感恩与愧疚交织的复杂心态。全文呈现了青年研究者在成长过程中对自我要求、技术追求与情感体验的真实剖白。
2026-07-29 00:04:32
262
原创 Rust-语言笔记-杂项
这道题要干什么 涉及到什么知识点 串起来讲一下从会议转写中剥离杂乱的口语逻辑,冗余表达、无效重复、无关修辞与话题分叉,提炼核心观点、论证逻辑与关键信息,串联起来,从头到尾重新讲解知识内容我感觉还是没懂,你不要单独的阐释这些概念了,一个个孤立的知识点之间没办法串联起来,你从头到尾的串联起来描述一下这个部分知识的工作流程是什么,不要割裂,不要逻辑跳跃,环境变量iter() 方法next()Option<&T>Some(&元素值)?
2026-07-28 03:32:14
507
原创 ok challenging - kernel ascend ad metax
其中 沐曦面向GPU与优化专项 与GPGPU与优化培养系列课程 涵盖编程+面向硬件 硬件参数细节信息由base说明指出。以下是关于tilelang-puzzle和cann-learning-hub的训练记录。已验证的资源是 昇腾+沐曦云算力 需考虑时限问题 尽量提高产出成果与效率。到这里是闲聊... 闲聊也很重要的 唉算了不想给自己这么多评判。嗯那进入今天的正题 我准备开始记录沐曦+昇腾的软件栈的算子的学习。关于竞赛的细节 正在跟进的是s9-challenge。一个细节是7月社区任务的跟进 正在同步。
2026-07-28 03:31:11
206
原创 机器学习--【 多元线性回归算法 】在波士顿房价预测问题的应用
观察我们需要的矩阵操作,包括矩阵的转置,矩阵乘法,矩阵求逆(只有方阵可以求逆),是的,死去的线性代数又将攻击你的大脑,这里我们假定大家都还记得矩阵的相关运算,是的,相信你们,米娜(表示预测值和实际值之间的偏差,我们构建的这样一个表达式的含义就是,找到一条轨迹,这个轨迹满足样本中的所有数据都有一个按照这个轨迹进行分布的。值数据,这就构建了一个y关于多个x的表达式,当多个表达式组合到一起时,对于多个多元线性方程组,这时就构成了矩阵运算的形式,其中。欢迎回到大型现代大学牲命苦现场。
2025-05-29 14:16:25
693
原创 算法--莫队算法--洛谷P10288 [GESP样题 八级] 区间
本文以洛谷的一道题目为例,详细介绍了莫队算法的基本思想和实现步骤。算法的核心在于对查询进行分块排序,并利用双指针维护当前区间的信息。为了处理数组中元素范围过大的问题,文中还介绍了离散化的技巧,将元素范围压缩到可接受的范围内。文章最后,作者分享了自己学习算法的经历,并感叹了 AI 技术对学习的巨大影响,使得学习资源变得更加丰富和便捷。同时,也表达了对高中时期薪火相传学习精神的怀念。
2025-05-21 22:13:00
1778
2
原创 算法--洛谷P6328我是仙人掌--BFS求最短路+bitset求点集
本文介绍了一种解决图论问题的方法,主要针对给定图中节点之间的距离查询。首先,通过BFS计算每个节点到其他节点的最短距离,并存储在二维数组中。然而,这种方法在数据规模较大时会导致时间复杂度过高,无法通过测试。为了优化,引入了bitset数据结构,用于高效存储和查询满足距离条件的节点集合。具体实现中,使用bitset数组记录每个节点到其他节点的距离,并通过位运算快速合并多个查询条件。最终,通过优化后的算法,显著减少了查询时间,解决了大规模数据下的性能问题。该方法适用于稀疏图,且在处理大量查询时表现出色。
2025-05-20 18:18:50
1873
1
原创 机器学习--KNN算法学习笔记
KNN算法(K-Nearest-Neighbors)是一种有监督的机器学习算法,常用于分类问题。以鸢尾花分类为例,算法通过计算待预测数据与训练集中每个样本的距离,找到距离最近的K个样本,并根据这K个样本的类别进行投票,最终确定待预测数据的类别。实现KNN算法的步骤包括:读取并存储数据、划分训练集和测试集、计算距离、进行预测并评估模型准确率。通过C++代码实现,可以完成数据的读取、随机划分、距离计算及分类预测,最终输出模型的准确率。KNN算法的核心思想是通过邻近样本的类别来推断未知样本的类别,适用于简单的分类
2025-05-16 15:25:09
1700
4
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅