已合并
混合编程interger fast div样例去除c++风格接口 && SIMT编程样例支持版本修改 #4374
zhangshunwei2创建于 7月15日
混合编程interger fast div样例去除c++风格接口 && SIMT编程样例支持版本修改 #4374
已合并
zhangshunwei2创建于 7月15日
zhangshunwei2成员
7月15日

描述

混合编程interger fast div样例去掉c++风格接口
SIMT编程样例支持版本修改为9.1.0

关联的Issue

关联Issue #1256
关联Issue #1242

测试

文档更新

类型标签

likedislike
Pull Request已成功合入, 合并人@CANN-robot
(感谢 zhangshunwei2 的贡献)
Zzhangshunwei2成员
7月15日 创建了 pull request,commit a8b7656a
atomgit-bot
atomgit-bot
7月15日 评论:

变更摘要

此 PR 主要涉及两项改动:一是在混合编程的 integer fast div 样例中移除 C++ 风格接口调用(AscendC::GetBlockIdx()),使代码风格与项目规范保持一致;二是将 SIMT 编程样例的支持版本更新为 9.1.0。整体变更规模较小,涉及 31 个文件,均为删除或修改单行内容。

主要改动

  • 移除 AscendC::GetBlockIdx() C++ 风格接口: 在 integer_div.asc 中删除了 uint32_t block_idx = AscendC::GetBlockIdx(); 这一行,去除对 C++ 风格 API 的调用,使样例代码更符合纯 C 风格的编程规范。
  • SIMT 编程样例支持版本更新: 将 SIMT 编程相关样例的支持版本号修改为 9.1.0(具体涉及文件中版本号字符串的替换)。
likedislike
不准确?
atomgit-bot
atomgit-bot
7月15日 评论:

代码审查

所有文件已审查完毕。以下是汇总:


审查总结

审查覆盖(31 个变更文件)

文件 状态
examples/03_simt_api/00_introduction/00_quickstart/hello_world_simt/README.md 无问题
examples/03_simt_api/00_introduction/00_quickstart/hello_world_simt/README_en.md 无问题
examples/03_simt_api/01_utilities/00_printf/README.md 无问题
examples/03_simt_api/01_utilities/00_printf/README_en.md 无问题
examples/03_simt_api/01_utilities/01_assert/README.md 无问题
examples/03_simt_api/01_utilities/01_assert/README_en.md 无问题
examples/03_simt_api/01_utilities/02_clock/README.md 无问题
examples/03_simt_api/01_utilities/02_clock/README_en.md 无问题
examples/03_simt_api/02_features/00_framework/00_pytorch/torch_library_roll/README.md 无问题
examples/03_simt_api/02_features/00_framework/00_pytorch/torch_library_roll/README_en.md 无问题
examples/03_simt_api/02_features/01_api_features/00_memory_access/insert_hash_table/README.md 无问题
examples/03_simt_api/02_features/01_api_features/00_memory_access/insert_hash_table/README_en.md 无问题
examples/03_simt_api/02_features/01_api_features/01_sync_instruction/memory_fence/README.md 无问题
examples/03_simt_api/02_features/01_api_features/01_sync_instruction/memory_fence/README_en.md 无问题
examples/03_simt_api/02_features/01_api_features/02_atomic_operation/histogram/README.md 无问题
examples/03_simt_api/02_features/01_api_features/02_atomic_operation/histogram/README_en.md 无问题
examples/03_simt_api/02_features/06_compile/00_basic_compile/README.md 无问题
examples/03_simt_api/02_features/06_compile/00_basic_compile/README_en.md 无问题
examples/03_simt_api/02_features/06_compile/01_separate_compile/README.md 无问题
examples/03_simt_api/02_features/06_compile/01_separate_compile/README_en.md 无问题
examples/03_simt_api/02_features/06_compile/02_dynamic_library_compile/README.md 无问题
examples/03_simt_api/02_features/06_compile/02_dynamic_library_compile/README_en.md 无问题
examples/03_simt_api/02_features/06_compile/03_static_library_compile/README.md 无问题
examples/03_simt_api/02_features/06_compile/03_static_library_compile/README_en.md 无问题
examples/03_simt_api/03_best_practices/00_memory_optimizations/aligned_types/README.md 无问题
examples/03_simt_api/03_best_practices/00_memory_optimizations/aligned_types/README_en.md 无问题
examples/03_simt_api/03_best_practices/00_memory_optimizations/cache_hint/README.md 无问题
examples/03_simt_api/03_best_practices/00_memory_optimizations/cache_hint/README_en.md 无问题
examples/03_simt_api/03_best_practices/00_memory_optimizations/short_vector_add/README.md 无问题
examples/03_simt_api/03_best_practices/00_memory_optimizations/short_vector_add/README_en.md 无问题
examples/05_simd_simt_hybrid/02_best_practices/simd_simt_integer_fast_div/integer_div.asc P0: 编译错误

按优先级统计

  • P0: 1
  • P1: 0
  • P2: 0
  • P3: 0

整体风险评估

高风险integer_div.asc 中删除了 block_idx 的声明行但未补充 C 风格替代写法,导致变量 block_idx 未定义,该文件无法通过编译。30 个 SIMT README 的版本号更新(9.0.0 → 9.1.0)均无问题。建议在合入前补上 asc_get_block_idx()get_block_idx() 调用。

类型 数量
🔴 阻塞 1
🟡 建议 0

⛔ 需要修改

likedislike
不准确?
CANN-robotCANN-robot成员
7月15日 添加了label:cann-cla/yes
CANN-robot
CANN-robot成员
7月15日 评论:

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


PR Approval Progress

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

Module Approval Details

module lgtm status approve status
docs munanhw, wulinyu (2/2) munanhw (1/1)
examples munanhw, wulinyu (2/2) munanhw (1/1)

💡 Tip:

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

CLA Signature Pass

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

likedislike
CANN-robotCANN-robot成员
7月15日 将zengjuan,zhanghao_0689,suqwe,wulinyu,kong0808,dengjing_aoe,YeZZzzz1,bluesky901,yangbinhua,zhudi22,chenyiyuan,xun_zhuge,XuebinYang,sjtulxh,bianque,houyuyang,Lycheeeee,YANXI_ZHAO,chentianyu19,shi_nanxiang,wuyang_hw,jiangxinyu3,munanhw,ai_xin,ascendhjh,hujiawen_kaven,wangxiaozhi,DragonBornHD84,changxianyu,hyolee,yukangchen设为评审人
CANN-robotCANN-robot成员
7月15日 将xun_zhuge,bianque,YANXI_ZHAO,munanhw,ai_xin,changxianyu设为审查人
Zzhangshunwei2成员
7月15日 关联了issue:[Requirement|需求建议]: 【AscendC样例】混合编程样例整改C编程风格
Zzhangshunwei2成员
7月15日 修改了pull request 的描述
zhangshunwei2成员
7月15日 评论:

/compile

likedislike
Zzhangshunwei2成员
7月15日 预合并成功(commit_id: f023d9e5fafa22931191d3276f3a133d3699bb5e)
CANN-robotCANN-robot成员
7月15日 添加了label:ci-pipeline-running
CANN-robot
CANN-robot成员
7月15日 评论:

流水线任务触发成功
任务链接 [2fc52e0cd38345c6b6f707a36f51a45d][流水线指导]

任务名称状态日志下载链接
SCA ✅ SUCCESS >>>>>
antipoison ✅ SUCCESS >>>>>
codecheck ✅ SUCCESS >>>>>
codecheck_Pr ✅ SUCCESS
pre_comment ✅ SUCCESS >>>>>
StaticCheck_codespell ✅ SUCCESS
StaticCheck_link_validity ✅ SUCCESS
StaticCheck_resource_existence ✅ SUCCESS
StaticCheck_tag_closed ✅ SUCCESS
StaticCheck_markdownlint ⚠️ WARNING >>>>>
codecheck_codestyle ✅ SUCCESS >>>>>
codecheck_precommit ✅ SUCCESS >>>>>

[2026-07-15 10:55:53]    CI执行结束

likedislike
CANN-robot
CANN-robot成员
7月15日 评论:

流水线任务触发成功
任务链接 [3d18a24a3fa142ca826601ecf2e7657a][流水线指导]

任务名称状态日志下载链接
Compile_Ascend_X86 ✅ SUCCESS >>>>> >>>>>
Compile_Ascend_ARM ✅ SUCCESS >>>>> >>>>>
pre_comment ✅ SUCCESS >>>>>
Compile_Ascend_X86_ubuntu24 ✅ SUCCESS >>>>> >>>>>
Compile_Ascend_ARM_ubuntu24 ✅ SUCCESS >>>>> >>>>>
PreSmoke_A900_npupool ✅ SUCCESS >>>>>

[2026-07-15 11:01:03]    CI执行结束

likedislike
CANN-robot
CANN-robot成员
7月15日 评论:

流水线任务触发成功
任务链接 [7c1132a85f84456fb6a4b435738882aa][流水线指导]

任务名称状态日志下载链接
Compile_Ascend_X86_ubuntu24 ✅ SUCCESS >>>>> >>>>>
pre_comment ✅ SUCCESS >>>>>
UT_Test_adv_test_one ✅ SUCCESS
UT_Test_adv_test_two ✅ SUCCESS
UT_Test_basic_test_one ✅ SUCCESS
UT_Test_basic_test_two ✅ SUCCESS
UT_Test_basic_test_three ✅ SUCCESS
UT_Test_basic_test_four ✅ SUCCESS
UT_Test_basic_test_five ✅ SUCCESS
UT_Test_arm ✅ SUCCESS
API_Check ✅ SUCCESS >>>>>
UT_Test_report ✅ SUCCESS >>>>>

[2026-07-15 11:03:20]    CI执行结束

likedislike
CANN-robotCANN-robot成员
7月15日 添加了label:api-check-pass
CANN-robotCANN-robot成员
7月15日 删除了label:ci-pipeline-running
CANN-robotCANN-robot成员
7月15日 添加了label:ci-pipeline-passed
atomgit-bot
atomgit-bot7月15日进行代码检视2
examples/05_simd_simt_hybrid/02_best_practices/simd_simt_integer_fast_div/integer_div.asc
@@ -109,4 +109,3 @@
109109 }
110110 
111- uint32_t block_idx = AscendC::GetBlockIdx();
112111 uint32_t block_offset = block_idx * THREAD_COUNT;
atomgit-bot
atomgit-bot7月15日评论:

🔴 Critical

该 diff 删除了 uint32_t block_idx = AscendC::GetBlockIdx();(C++ 风格接口),但紧接的第 111 行(新行号)仍然使用 block_idx 计算 block_offsetuint32_t block_offset = block_idx * THREAD_COUNT;。删除后 block_idx 在整个函数及文件中无任何声明或定义,会产生未定义标识符的编译错误。

该 PR 的目标是去掉 C++ 风格接口并替换为 C 风格接口。同类文件 matrix_transpose.asc 中已使用 get_block_idx()(底层内建函数),官方 C API 为 asc_get_block_idx()(定义于 include/c_api/sys_var/sys_var.h,返回 int64_t)。应补充 C 风格替代写法,而非仅删除该行。

建议:将删除的行替换为 C 风格 API 调用。可参考同仓库 matrix_transpose.asc 使用 get_block_idx() 或使用官方 C API asc_get_block_idx()。注意 asc_get_block_idx() 返回 int64_t,赋值给 uint32_t 时建议加上显式类型转换。

likedislike
不准确?
zhangshunwei2成员
7月15日 评论:

asc_get_block_idx()在a5不支持
get_block_idx() 是非对外接口,不推荐使用

louyuxuan成员7月15日进行代码检视2
examples/05_simd_simt_hybrid/02_best_practices/simd_simt_integer_fast_div/integer_div.asc
@@ -109,4 +109,3 @@
109109 }
110110 
111- uint32_t block_idx = AscendC::GetBlockIdx();
112111 uint32_t block_offset = block_idx * THREAD_COUNT;
louyuxuan7月15日评论:

block_idx 定义删了,这里还在用,能编过吗?

likedislike
zhangshunwei2成员
7月15日 评论:

核函数内可以直接使用block_idx,用于获取执行代码的逻辑核ID

Zzhangshunwei2成员
7月15日 解决了最后一个问题
zhangshunwei2成员
7月15日 评论:

/check-pr

likedislike
CANN-robot
CANN-robot成员
7月15日 评论:

The following labels are not ready.

lgtm: Please wait for reviewers to review the code.

approved: Please wait for committers to review the code.

likedislike
Zzhangshunwei2成员
7月16日 关联了issue:[Bug-Report|缺陷反馈]: 安装 CANN 9.0.1 版本后,引用打印日志头文件后,编译报错,使用社区提供的样例测试时发现也同样报错,请定位分析,多谢
Zzhangshunwei2成员
7月16日 修改了pull request 的描述
shaonaite
shaonaite成员7月17日进行代码检视2
examples/05_simd_simt_hybrid/02_best_practices/simd_simt_integer_fast_div/integer_div.asc
已过期
@@ -23,7 +23,7 @@
2323#include <random>
2424#include <vector>
2525#include "acl/acl.h"
2626#include "kernel_operator.h"
shaonaite
shaonaite7月17日评论:

删除kernel_operator.h头文件引用

likedislike
System
系统消息系统
7月17日 评论:

changed this line on 72514992 view diff detail

shaonaite
shaonaite成员7月17日进行代码检视2
examples/05_simd_simt_hybrid/02_best_practices/simd_simt_integer_fast_div/integer_div.asc
已过期
@@ -46,7 +46,7 @@
4646constexpr uint32_t DIVISOR = 7; // fixed divisor
4747} // namespace
4848 
4949__aicore__ inline int64_t CountLeadingZero(uint64_t x) { return clz(x); }
shaonaite
shaonaite7月17日评论:

改为下划线风格

likedislike
System
系统消息系统
7月17日 评论:

changed this line on 72514992 view diff detail

Zzhangshunwei2成员
7月17日 预合并成功(commit_id: f46a16909399668aa031e49191efb54fe4e2f617)
Zzhangshunwei2成员
7月17日 强制推送  1 个提交:72514992-refactor: use builtin block_idx in integer fast div
Zzhangshunwei2成员
7月17日 预合并成功(commit_id: 8a7784eb64a88cd189e5784a94bb604f3421724d)
CANN-robotCANN-robot成员
7月17日 删除了label:ci-pipeline-passed
CANN-robot
CANN-robot成员
7月17日 评论:

Notification

This pull request has been changed(code update) or closed, so removes the following label(s): ci-pipeline-passed.

likedislike
zhangshunwei2成员
7月17日 评论:

/compile

likedislike
Zzhangshunwei2成员
7月17日 预合并成功(commit_id: c6cca6a3bac63c6882307f7c1807b45fb06938a7)
CANN-robotCANN-robot成员
7月17日 删除了label:api-check-pass
CANN-robotCANN-robot成员
7月17日 添加了label:ci-pipeline-running
CANN-robot
CANN-robot成员
7月17日 评论:

流水线任务触发成功
任务链接 [2361273b4e5e45b4ae248e835e8f2655][流水线指导]

任务名称状态日志下载链接
SCA ✅ SUCCESS >>>>>
antipoison ✅ SUCCESS >>>>>
codecheck ✅ SUCCESS >>>>>
codecheck_Pr ✅ SUCCESS
pre_comment ✅ SUCCESS >>>>>
StaticCheck_codespell ✅ SUCCESS
StaticCheck_link_validity ✅ SUCCESS
StaticCheck_resource_existence ✅ SUCCESS
StaticCheck_tag_closed ✅ SUCCESS
StaticCheck_markdownlint ⚠️ WARNING >>>>>
codecheck_codestyle ✅ SUCCESS >>>>>
codecheck_precommit ✅ SUCCESS >>>>>

[2026-07-17 17:18:36]    CI执行结束

likedislike
CANN-robot
CANN-robot成员
7月17日 评论:

流水线任务触发成功
任务链接 [69677070dac84fbca4bfc3e091547163][流水线指导]

任务名称状态日志下载链接
Compile_Ascend_X86 ✅ SUCCESS >>>>> >>>>>
Compile_Ascend_ARM ✅ SUCCESS >>>>> >>>>>
pre_comment ✅ SUCCESS >>>>>
Compile_Ascend_X86_ubuntu24 ✅ SUCCESS >>>>> >>>>>
Compile_Ascend_ARM_ubuntu24 ✅ SUCCESS >>>>> >>>>>
PreSmoke_A900_npupool ✅ SUCCESS >>>>>

[2026-07-17 17:25:24]    CI执行结束

likedislike
CANN-robot
CANN-robot成员
7月17日 评论:

流水线任务触发成功
任务链接 [cbeaac31e3cf448cb60cfcd382e1b291][流水线指导]

任务名称状态日志下载链接
Compile_Ascend_X86_ubuntu24 ✅ SUCCESS >>>>> >>>>>
pre_comment ✅ SUCCESS >>>>>
UT_Test_adv_test_one ✅ SUCCESS
UT_Test_adv_test_two ✅ SUCCESS
UT_Test_basic_test_one ✅ SUCCESS
UT_Test_basic_test_two ✅ SUCCESS
UT_Test_basic_test_three ✅ SUCCESS
UT_Test_basic_test_four ✅ SUCCESS
UT_Test_basic_test_five ✅ SUCCESS
UT_Test_arm ✅ SUCCESS
API_Check ✅ SUCCESS >>>>>
UT_Test_report ✅ SUCCESS >>>>>

[2026-07-17 17:26:41]    CI执行结束

likedislike
CANN-robotCANN-robot成员
7月17日 添加了label:api-check-pass
CANN-robotCANN-robot成员
7月17日 删除了label:ci-pipeline-running
CANN-robotCANN-robot成员
7月17日 添加了label:ci-pipeline-passed
wulinyu成员
7月17日 评论:

/lgtm

likedislike
munanhw成员
7月17日 评论:

/approve

likedislike
CANN-robotCANN-robot成员
7月17日 添加了label:lgtmapproved
CANN-robotCANN-robot成员
7月17日 合入了pull request