已关闭
[Requirement|需求建议]: ApplyMomentum算子消除vf间的数据依赖,优化性能 #1781
cheng-ziyang2创建于 3月28日关闭于 3月30日
3月28日 添加了label:requirement
3月28日 修改了issue 的描述
cheng-ziyang2
3月28日 评论:
3月28日 评论:
/assign


3月28日 将 cheng-ziyang2 设为负责人
3月30日 关闭了 issue
3月30日 添加了label:resolved
Thanks for sending an requirement! Please fill in the following template to help quickly solve your problem.
Backgroud(背景信息)
本次需求对动量优化器(ApplyMomentum)的算子内核进行了重构,旨在解决原有实现中代码维护复杂和数据依赖的问题。当前手写vf的方式无法利用框架能力,load-store之间存在数据依赖,导致指令并行度低,性能不满足预期。通过重构实现:
1、提升了代码的可读性和可复用性,统一了算子开发的范式;
2、解决了load-store间数据依赖的问题,提高指令并行度从而优化性能并提升性能。
Origin(信息来源)
ApplyMomentum
Benefit / Necessity (价值/作用)
1、重构代码实现,统一实现方式
2、提高指令并行度,提升了算力利用率,优化性能
Design(设计方案)
核心修改是将原有的、针对特定硬件的自定义底层向量计算逻辑,替换为使用统一的atvoss基础接口(Vec)。具体移除了手写的向量加载、存储和计算函数,转而使用通用atvoss接口(如 Vec::CopyIn、Vec::Mul、Vec::Add 等)重新构建了 ApplyMomentumDag 和 ApplyNesterovMomentumDag 的计算图,利用编译器能力实现vf内指令融合,解决数据依赖的问题,提升性能,同时使计算逻辑更清晰,便于后续优化和扩展。