已合并
feat: flash_attn_lite_story v0 / kv_rms_norm_rope_cache_story / simt_histogram_story SetFlag/WaitFlag 改造为 Mutex 同步 #396
qq_51867290创建于 17 天前
feat: flash_attn_lite_story v0 / kv_rms_norm_rope_cache_story / simt_histogram_story SetFlag/WaitFlag 改造为 Mutex 同步 #396
已合并
Pull Request已成功合入, 合并人@CANN-robot
(感谢 qq_51867290 的贡献)17 天前 创建了 pull request,commit 62aa0687
atomgit-bot
17 天前 评论:
17 天前 评论:
变更摘要
本 PR 将 flash_attn_lite_story v0、kv_rms_norm_rope_cache_story、simt_histogram_story 三个样例中核内流水的 SetFlag/WaitFlag(及 SetWaitFlag)同步原语统一改造为 Mutex::Lock/Unlock(ISASI),保持流水逻辑与同步语义不变。改造后通过固定 MutexID 或动态 AllocMutexID 进行同步,并删除了 SetWaitFlag、STATIC_EVENT_ID、EV_*、event_t/FetchEventID 等死代码。
主要改动
flash_attn_lite_storyv0 同步原语改为固定 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_READY、EV_QK_L0_READY等EV_*常量,同步语义完全由 Mutex 承担。 kv_rms_norm_rope_cache_story用动态 Mutex 替代WaitScalarToMte3:在membase和regbase两个full_load.asc中,删除基于FetchEventID/SetFlag/WaitFlag的WaitScalarToMte3(),新增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中新增动态分配的mte2SMutex、vSMutex,将HardEvent::MTE2_S和HardEvent::V_S的SetFlag/WaitFlag改为跨管道Mutex::Lock/Mutex::Unlock,并在函数收尾ReleaseMutexID。


atomgit-bot
17 天前 评论:
17 天前 评论:
17 天前 添加了label:cann-cla/yes
CANN-robot
17 天前 评论:
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
/approveor/lgtm- Commenting
/approveimplies 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. 👍


此处折叠了55条消息 查看更多
8 天前 update merge request[project id: 8788227, iid: 396, commit_id: 5e0f3acf7809e71575f3843e60e5dbebd8890031] virtual merging success
8 天前 update merge request[project id: 8788227, iid: 396, commit_id: 5e0f3acf7809e71575f3843e60e5dbebd8890031] virtual merging success
8 天前 添加了label:ci-pipeline-running
8 天前 删除了label:ci-pipeline-running
8 天前 添加了label:ci-pipeline-passed
8 天前 合入了pull request
描述
将 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不改内容:
关联的Issue
不涉及
测试
在 Ascend 950PR(dav-3510)/ CANN 9.1.0 环境下验证:
文档更新
不涉及
类型标签