自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 收藏
  • 关注

原创 基于Aido智能体的系统实践与应用分析

Aido智能体凭借其多模态、多场景特性,通过深度调试、流程优化和创新应用,可显著提升系统智能化水平。在实际应用中,每一步都需要精心打磨和技术支撑。希望这些代码示例能助您更好地理解和实践,为迎接智能开发的未来挑战做好准备!

2025-11-24 22:42:55 282

原创 深入解读:基于Nexent智能体的系统设计与实践探索

本文探讨了智能体技术在提升用户体验和应用创新中的关键作用。以Nexent智能体为例,文章从五个维度展开:1)智能体使用体验评测,强调知识生成和多智能操作的重要性;2)应用编排创新,介绍结构化工作流设计和插件扩展;3)创新应用场景,展示数据分析和内容创作能力;4)系统特性分析,突出多源融合与可扩展性;5)开发者视角,提供性能优化建议。通过技术实践与系统架构相结合,为构建高效智能系统提供解决方案。

2025-11-24 22:35:01 433

原创 CANN笔记深度实践:打造高性能CANN自定义卷积算子

深度学习应用中,标准算子难以满足特殊场景需求时,定制化算子设计能显著提升性能。关键挑战在于优化硬件利用率、数据调度和流水线连续性。通过数据格式优化、多级缓存调度、分块处理和流水线并行等技术,可最大化NPU资源利用。实践表明,合理利用缓存、拆分空间维度和优化循环顺序能有效减少访存延迟,实现高效计算。昇腾CANN训练营提供相关课程,帮助开发者掌握算子开发技能并获取认证。

2025-11-18 20:40:19 574

原创 CANN笔记

CANN自定义算子的破局之道:\n通过自定义CANN算子,我们可以将 $TopK$ 采样和 $BeamSearch}$ 的核心逻辑原子化,在 NPU 的 Vector/Cube 单元上高效实现:\n\n向量化 $SelectK$: 避免全排序,利用 NPU 向量指令实现高效的部分排序/选择(即 $SelectK$),将 $O(V \\log V)$ 的复杂度降到更优。

2025-11-18 19:30:36 298

原创 文本生成与动态性:CANN 自定义算子实现高效采样

摘要:本文探讨了UGC场景中文本生成模型在解码阶段的瓶颈问题,重点分析了TopK/TopP采样过程中的性能挑战。通过设计CANN自定义算子LogitsSelectK,利用NPU硬件特性实现向量化SelectK操作,将时间复杂度从O(VlogV)降至O(VlogK)。该方法通过分块处理、UB内存优化和指令级并行,显著提升了采样效率,解决了传统方法中排序性能差、内存带宽受限等问题,为LLM/Transformer模型的高效部署提供了有效解决方案。

2025-11-09 20:56:10 930

原创 模型瘦身与提速:CANN动态反量化算子实战

本文探讨了在UGC业务场景下,如何通过模型量化技术(特别是Int8量化)优化推荐系统和内容审核模型的推理性能。重点分析了Int8量化的核心挑战,包括计算效率提升与精度保障的平衡,以及动态反量化处理带来的性能瓶颈。为解决这些问题,提出了CANN自定义算子的解决方案,通过将反量化和反归一化操作融合为一个算子,实现NPU上的向量化加速和访存优化。文中详细介绍了Int8DequantDenormFusion算子的设计思路和实现方法,并分享了深度优化经验。该方法有效避免了冗余计算和访存,显著提升了端到端推理效率。

2025-11-09 20:54:37 898 1

原创 我的CANN实战笔记:当我试图“雨露均沾”时,才发现并行有多难

本文记录了一名大三学生在CANN算子开发中从单核优化到多核并行的实践历程。作者最初仅关注单核Tiling优化,在使用Profiler分析时发现其他核心闲置。通过分析失败的多核平均分配方案,作者识别出整数除法导致的任务丢失和分配不均问题,最终采用Grid-Stride模式实现负载均衡。文章详细展示了错误代码与修正方案,总结了三个关键优化步骤:Tiling解决访存延迟、内存对齐提升吞吐量、并行化提高多核利用率,并强调必须处理"数据块"和"核心分配"两个维度的尾部数据问题。

2025-11-08 21:17:34 852

原创 初探NPU:大三学生开发LayerNorm算子的实践历程——从TBE实现到精度优化

摘要:本文记录了一位大三学生在昇腾AI处理器上开发LayerNorm算子的实战经验。作者使用TBEDSL描述计算逻辑,重点解决了两个关键问题:数据排布优化(理解NC1HWC0格式与NCHW逻辑视图差异)和FP16精度偏差(采用混合精度策略)。通过实践,作者认识到NPU算子开发需要平衡性能与精度,掌握硬件特性与计算优化的关系。这次经验为后续挑战AscendC算子开发奠定了基础,展示了从理论到实践的成长历程。

2025-11-08 21:16:06 755

原创 深入Rust异步核心:Waker与唤醒机制的精妙舞蹈

Rust异步编程中的Waker机制是实现高效非阻塞任务调度的核心。本文深入剖析了Waker的工作原理,通过手动实现TimerFuture示例,展示了Waker如何作为执行器与异步任务间的桥梁。关键点包括:1) Waker使任务能通知执行器其就绪状态,避免忙等待;2) Future返回Pending时必须存储Waker并确保后续唤醒;3) Waker设计实现了线程安全的解耦调度。文章揭示了Rust异步模型通过Waker实现的高效协作机制,以及开发者必须遵守的"存储-唤醒"契约,这对深入理解

2025-10-30 18:23:36 685

原创 Rust 异步编程:Poll机制与状态机转换的深度解析

本文深度解析Rust异步编程中的Poll机制与状态机转换原理。Poll机制采用被动轮询方式,通过Pending/Ready两种状态驱动Future执行。编译器将async函数转换为显式状态机,每个await点对应状态转换。文中通过实现TimeoutFuture示例,展示了Poll机制的实际应用,并提出了状态最小化、Pin必要性等优化建议。Rust通过编译期生成状态机实现零成本异步抽象,在保证安全性的同时获得高性能。理解这些底层机制有助于编写更高效的异步代码。

2025-10-30 18:21:09 235

原创 Rust 的永恒契约:深入解析 static 生命周期的双重奥义

Rust中的'static生命周期具有两种关键形式:引用形式&'static T表示指向程序整个生命周期内有效的永久数据;泛型约束T: 'static则要求类型T必须是自包含的,不能依赖外部临时数据。后者是Rust实现线程安全(std::thread::spawn)和类型安全擦除(Box<dyn Any>)的核心机制:确保转移的值不会产生悬垂引用,从而在并发和动态类型场景下维护内存安全。这种双重设计体现了Rust在没有垃圾回收的情况下保证安全性的独特智慧。

2025-10-30 18:15:22 494

原创 Rust 中 Poll 机制与状态机转换:异步编程的核心原理

摘要:Rust异步编程的核心是Poll机制与状态机转换。Poll枚举(Ready/Pending)作为Future特征的基础,驱动状态机转换。编译器将async函数转化为状态机,通过poll方法推进执行。Waker机制确保Pending任务能被重新调度。文章通过计时器Future的实现示例,展示了自定义Future的关键细节,包括状态一致性、Waker注册和Pin使用。Poll机制的优势在于零成本抽象、细粒度控制和资源效率,是理解Rust异步编程本质的关键。掌握这一机制有助于诊断性能问题、设计高效API和优

2025-10-30 18:15:00 493

原创 Rust 中 Poll 机制与状态机转换:异步编程的核心原理

本文深入解析了Rust异步编程中的Poll机制与状态机转换原理。Poll作为Rust标准库中的枚举类型,通过Ready/Pending两种状态驱动异步任务的执行。文章揭示了Future特征与Poll的关系,展示了编译器如何将async函数转换为状态机,并通过poll方法推进状态转换。特别分析了Waker在任务重新调度中的关键作用,并通过实现计时器Future的示例演示了自定义Future的正确实践。文中还探讨了Poll机制的优势,包括零成本抽象、细粒度控制和资源效率,强调理解这一核心机制对诊断性能问题、设计

2025-10-30 18:12:09 617

原创 洞察仓颉性能之眼:热点代码的精准识别与深度优化

本文深入探讨了在高性能编程语言仓颉中优化热点代码的方法策略。首先强调数据驱动的性能分析理念,指出应避免主观猜测,而应依靠专业分析工具。随后通过实例解析CPU热点和内存热点两类典型问题:针对CPU密集型代码,提出使用火焰图诊断,并展示通过减少字符串操作和预分配资源来优化循环处理;对于内存密集型场景,建议改进数据结构和引入对象复用机制。最后指出,有效的性能优化需要结合工具诊断与专家思考,从算法、数据结构等多维度进行精准改进。全文为开发者提供了科学定位和优化性能瓶颈的实用指南。

2025-10-29 13:41:25 615

原创 《仓颉字典(Map)核心实践:超越 CRUD 的安全与效率哲学》

仓颉语言中的Map设计体现了安全、高效和并发三大核心理念。通过Option<T>类型强制处理空值,避免运行时错误;所有权机制确保增删改操作中的资源管理安全性;Entry API优化原子操作减少哈希查找次数;并发场景下提供Mutex和ConcurrentMap两种选择,平衡简单性与高性能需求。这些特性共同构建了比传统CRUD更可靠的数据操作范式。

2025-10-29 13:37:32 861

原创 驾驭仓颉的律动:循环语句的设计哲学与性能密码

本文深入解析了仓颉编程语言中的循环设计哲学与实战应用。文章首先对比了for和while循环的设计差异:for-in循环通过迭代器协议实现安全遍历,避免传统循环的常见错误;while循环则适用于不确定次数的条件控制,但需警惕无限循环风险。随后通过两个深度实践案例展示了仓颉循环的高级用法:一是通过实现自定义迭代器揭示for-in背后的协议编程思想;二是构建带重试机制的哨兵循环,展示while的条件处理能力。最后强调,优秀代码应优先选用函数式方法表达意图,只有在必要时才使用显式循环。全文展现了仓颉语言在循环设计上

2025-10-29 13:35:56 258

原创 《仓颉注释规范:从“文档”到“契约”的演进》

仓颉语言的注释规范基于"契约式"设计理念,分为三个层次:1) API文档注释(面向使用者,明确功能、参数、返回值和异常);2) 实现细节注释(解释复杂逻辑和优化);3) 安全与并发契约(针对unsafe操作、数据不变性和线程安全)。这套规范强调注释应像代码一样严谨,通过显式声明来确保内存安全、并发安全和API意图的清晰传达,使注释成为构建可靠系统的重要组成部分。

2025-10-29 13:33:23 534

原创 仓颉的“创世法则”:构造函数的确定性与完整性艺术

仓颉语言的构造函数设计采用"两段式初始化"与"安全检查"机制,将对象初始化严格分为"属性赋值"和"完整构建"两个阶段,确保对象从创建伊始就处于有效状态。通过"指定构造函数"(负责核心属性初始化)和"便利构造函数"(提供简化API)的职责分离,实现了单一真相源维护和灵活调用。这种设计从语言层面杜绝了"空指针"等隐患,同时保证继承链完整性,为构建高健壮性系统提供基础保障。

2025-10-29 13:29:39 325

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除