Merged
feat: add asc_uintdiv SIMT API #6009
zhangshunwei2Add on Sep 14
feat: add asc_uintdiv SIMT API #6009
Merged
Merged fromzhangshunwei2/asc-devkitfastdiv_simtintocann/asc-devkitmaster
Pull Request has been successfully merged by CANN-robot.
(Thank you for zhangshunwei2's contribution.)Sep 14 Created pull request, commit e6f0d5c1
Sep 14 Associated issue: [Requirement|需求建议]: 新增C风格接口支持uintdiv
atomgit-bot
Sep 14 Comments:
Sep 14 Comments:
抱歉,我无法回答这个问题。


Incorrect?
atomgit-bot
Sep 14 Comments:
Sep 14 Comments:
Sep 14 Added label: stat/needs-squash
178 messages are collapsed here。 See more
Sep 20 Added label: lgtm
zhanghao_0689
Sep 21 Comments:
Sep 21 Comments:
/lgtm
/approve


Sep 21 Added label: approved
Sep 21 Merged pull request
描述
新增 C 风格 SIMT 快速整数除法接口,共两个,均支持 uint32/uint64:
asc_get_uintdiv_magic_and_shift:在核函数标量计算逻辑中根据除数预计算乘法因子magic和移位量shift(该接口由 #6008 原 scalar 侧实现迁移至simt_api/math_functions.h,与asc_uintdiv归置一处)。asc_uintdiv:在 SIMT VF 计算逻辑中根据被除数与预计算参数,通过无符号高位乘法、加法和右移计算整数商,适用于同一除数被大量数据复用的场景。接口用于 Ascend 950(dav-3510)的 SIMD+SIMT 混合编程,不支持纯 SIMT 编程。两种位宽的被除数及对应除数最大值分别为 INT32_MAX、INT64_MAX。两个接口在同一头文件
simt_api/math_functions.h中提供,调用示例为完整闭环(标量预计算 +asc_vf_call+ VF 内快除),可独立编译。关联的Issue
关联 Issue #1592。
测试
git diff --check upstream/master通过。ascendc_ut_simt_api_ascend950pr_9599UT 265/265 通过(含 ASCENDC_CPU_DEBUG host 编译路径);bisheng 设备编译、纯 SIMT(--enable-simt)宏排除、混合编程 NPU 全量样例(uint32/uint64 各 8388608 元素,普通/快速除法双场景)实测通过;cycle 级性能测量确认 uint32/uint64 快除相对普通除法的收益保持。文档更新
新增
asc_uintdiv、asc_get_uintdiv_magic_and_shiftAPI 文档,给出高位乘法取整与预计算公式、约束及闭环调用示例;更新整数数学函数索引、混合编程 API 列表和 API 总目录。类型标签