已合并
feat: flash_attn_lite_story v0 / kv_rms_norm_rope_cache_story / simt_histogram_story SetFlag/WaitFlag 改造为 Mutex 同步 #396
feat: flash_attn_lite_story v0 / kv_rms_norm_rope_cache_story / simt_histogram_story SetFlag/WaitFlag 改造为 Mutex 同步 #396
已合并
qq_51867290创建于 17 天前
qq_51867290
qq_51867290
17 天前

描述

将 flash_attn_lite_story v0、kv_rms_norm_rope_cache_story、simt_histogram_story 三个样例中核内流水 SetFlag/WaitFlag 同步原语改造为 Mutex::Lock/Unlock(ISASI),不改变流水逻辑与同步语义。

改造范围:

  • flash_attn_lite_story/src/v0/:SetWaitFlag(SetFlag+WaitFlag 背靠背)改造为 Mutex,每个 buffer 方向用独立固定 MutexID(0-11),Lock/Unlock 放在真实指令前后
  • kv_rms_norm_rope_cache_story/membase+regbase/:WaitScalarToMte3 中 SetFlag<S_MTE3>/WaitFlag<S_MTE3> 改造为 Lock<PIPE_MTE3>/Unlock<PIPE_MTE3>
  • simt_histogram_story/src/0_serial_scalar.asc:SetFlag/WaitFlag(MTE2_S、V_S)改造为 Mutex
  • 删除 SetWaitFlag 函数、STATIC_EVENT_ID/EV_* 常量、event_t/FetchEventID 等死代码

不改内容:

  • 流水逻辑、buffer 分配、Copy/Mmad/Fixpipe 指令
  • CrossCoreSetFlag/CrossCoreWaitFlag

关联的Issue

不涉及

测试

在 Ascend 950PR(dav-3510)/ CANN 9.1.0 环境下验证:

  • 精度:三个样例全部 PASS
  • 性能:kernel 时间持平

文档更新

不涉及

类型标签

likedislike
Pull Request已成功合入, 合并人@CANN-robot
(感谢 qq_51867290 的贡献)
qq_51867290qq_51867290
17 天前 创建了 pull request,commit 62aa0687
atomgit-bot
atomgit-bot
17 天前 评论:

变更摘要

本 PR 将 flash_attn_lite_story v0、kv_rms_norm_rope_cache_storysimt_histogram_story 三个样例中核内流水的 SetFlag/WaitFlag(及 SetWaitFlag)同步原语统一改造为 Mutex::Lock/Unlock(ISASI),保持流水逻辑与同步语义不变。改造后通过固定 MutexID 或动态 AllocMutexID 进行同步,并删除了 SetWaitFlagSTATIC_EVENT_IDEV_*event_t/FetchEventID 等死代码。

主要改动

  • flash_attn_lite_story v0 同步原语改为固定 Mutex:在 falite_kernel_aic.h 中新增 MUTEX_Q_L1~MUTEX_DO_L0C(0-7),在 _shared_k.h 中新增 MUTEX_S_UB~MUTEX_OUT_UB_GM(8-11),并将原 SetWaitFlag/SetFlag/WaitFlag 改为在真实 Copy/Mmad/Fixpipe 指令前后放置对应的 Mutex::Lock/Mutex::Unlock
  • 删除 flash_attn_lite_story 的旧同步常量和辅助函数:移除 SetWaitFlag 模板函数、STATIC_EVENT_ID0/1/2 以及 EV_K_L1_READYEV_QK_L0_READYEV_* 常量,同步语义完全由 Mutex 承担。
  • kv_rms_norm_rope_cache_story 用动态 Mutex 替代 WaitScalarToMte3:在 membaseregbase 两个 full_load.asc 中,删除基于 FetchEventID/SetFlag/WaitFlagWaitScalarToMte3(),新增 sMte3Mutex = AscendC::AllocMutexID(),并将 DataCopyPad 前后改为 Mutex::Lock<PIPE_MTE3>/Mutex::Unlock<PIPE_MTE3>,结束时 ReleaseMutexID
  • simt_histogram_story 的 MTE2→Scalar 与 Vector→Scalar 同步改为 Mutex:在 0_serial_scalar.asc 中新增动态分配的 mte2SMutexvSMutex,将 HardEvent::MTE2_SHardEvent::V_SSetFlag/WaitFlag 改为跨管道 Mutex::Lock/Mutex::Unlock,并在函数收尾 ReleaseMutexID
likedislike
atomgit-bot
atomgit-bot
17 天前 评论:

代码审查

✅ 未发现问题

likedislike
CANN-robotCANN-robot成员
17 天前 添加了label:cann-cla/yes
CANN-robot
CANN-robot成员
17 天前 评论:

Thanks for your pull-request.
The full list of commands accepted by me can be found at here.
You can get sig-info at here.
You can self-configure the PR merge rules for this repository. For more details, please refer to Here.
For more, you also can visit HICANN.


PR Approval Progress

Congratulations! All modules have met the lgtm and approve requirements.

Module Approval Details

module lgtm status approve status
repo-cann/cann-samples zhangzijie, 周奇龙 (2/2) zhangzijie, 周奇龙 (2/1)

💡 Tip:

  • Committer can comment /approve or /lgtm
  • Commenting /approve implies both code review (lgtm) and intent to merge (approve)

CLA Signature Pass

qq_51867290, thanks for your pull request. All authors of the commits have signed the CLA. 👍

likedislike
此处折叠了55条消息 查看更多
qq_51867290qq_51867290
8 天前 update merge request[project id: 8788227, iid: 396, commit_id: 5e0f3acf7809e71575f3843e60e5dbebd8890031] virtual merging success
CANN-robotCANN-robot成员
8 天前 添加了label:ci-pipeline-running
CANN-robotCANN-robot成员
8 天前 删除了label:ci-pipeline-running
CANN-robotCANN-robot成员
8 天前 添加了label:ci-pipeline-passed
CANN-robotCANN-robot成员
8 天前 合入了pull request