文件最后提交记录最后更新时间
[feature] 扩展 CallStack 类支持多 kernel 调用栈查询 Co-authored-by: cycoe<zhuhaonan6@h-partners.com> # message auto-generated for no-merge-commit merge: !122 merge cross_npu_callstack into master [feature] 扩展 CallStack 类支持多 kernel 调用栈查询 Created-by: cycoe Commit-by: cycoe Merged-by: ascend-robot Description: ### 1. 修改描述 - **修改原因:** mssanitizer 需要支持 shmem 算子卡间共享内存竞争检测 - **修改方案:** 运行时收集所有卡上的执行指令记录,并进行检测 - **修改内容:** 1. 扩展 CallStack 类,支持同时管理多个 kernel 的调用栈缓存和查询 2. memcheck、synccheck 等不涉及卡间检测的,kernelName 直接从 RuntimeContext 上下文中获取,与之前保持一致;racecheck 涉及卡间检测,kernelName 信息从 KernelManager 中获取 - [ ] **涉及代码双合**(贴上另一个PR链接): ---- ### 2. 功能验证 - [ ] **功能自验截图**(请确保不体现个人信息) 不涉及 - [x] **冒烟是否通过** 失败用例与本 PR 无关 [----------] reduce 158 case(s) from 14 test suite(s) [ FAILED ] 5 case(s) from 1 suite(s) failed [ FAILED ] intrinsics_record_test.sink_avg_pool2d_static_test [ FAILED ] intrinsics_record_test.sink_avg_pool2d_mix_test [ FAILED ] intrinsics_record_test.sink_avg_pool2d_static_with_kernel_name_test [ FAILED ] intrinsics_record_test.sink_avg_pool2d_mix_with_kernel_name_test [ FAILED ] intrinsics_record_test.static_stub_vec_calc_intrinsics [----------] reduce done ---- ### 3. 代码检视 - **要求:** - 合入功能代码大于 200 行,需要sig会议申报代码检视议题,并在PR中标注会议。 - committer评估是否需要在sig会议进行代码检视。 - 参与检视的committer人员名单与检视时间。 - 大于 1000 行代码原则上不允许合入,需进行备案。 - [x] **是否经过代码检视** - [x] **是否具备UT测试用例看护** - [ ] **是否需要在sig会议中进行代码检视** - **检视committer人员名单与检视时间:** ---- ### 4. 资料修改自检 - **资料修改:** 不涉及 ---- See merge request: Ascend/mssanitizer!1222 个月前
Initial commit5 个月前
Initial commit5 个月前
Initial commit5 个月前
【feature】解决UT在较新的GCC 11.x版本编译失败问题,适配GCC 11.x版本 Co-authored-by: mengguangxin<mgx0018@163.com> # message auto-generated for no-merge-commit merge: !57 merge dev_0211 into master 【feature】解决UT在较新的GCC 11.x版本编译失败问题,适配GCC 11.x版本 Created-by: mengguangxin Commit-by: mengguangxin Merged-by: ascend-robot Description: ### 1. 修改描述 - **修改原因:** 在CANN官方镜像配套的GCC11.x版本上,UT编译报大量失败,GCC11在检查上会更严格一些,需要适配修改并兼容GCC9等老版本。 - **修改方案:** GCC11 的 libstdc++ 头更容易被 UT 里的宏污染,再加上一处编译期开关在 GCC9 被跳过、GCC11 才触发,所以在 GCC11 上爆出来大量编译错误。 1. std::any ... redeclared with different access / std::__mutex_base() protected 根因是多个 UT 里写了 #define private public(甚至有的没 #undef),导致 <any>/<mutex> 等标准库头被改写,GCC11 直接报错。 2. static_assert ... is_record_match<SIMT_LDG,...> 报错 这段检查在 Recorder::MemCheck/DumpRecord 里只对 GCC8/9 被跳过,GCC11 没有加跳过处理,会触发错误。 3. UT 运行崩溃报段错误: race_info_display.h 和 mem_error_def.h 都叫 FormatKernelName,不同 UT下会形成未定义行为,GCC11 下触发了段错误。 4. 报googletest内maybe-uninitialized 老GCC检查不出这个问题,升级到 GCC 11 后新告警出现,在 gtest-death-test.cc 里被当成错误,但我们不能改googletest的源码,只能修改CMakeLists.txt忽略这个错误 5. 对非 aggregate 类型 MemOpRecordForShadow类型初始化语法错误: 改用更通用的语法兼容多版本; 6. ut编译明确为debug模式,减少UT打桩打不上概率问题: 因为ut就是为了发现问题,带调试信息方便定位,而且release版本可能做各种类似内联优化,导致一些函数桩打不上影响UT功能; - **修改内容:** 1. 把所有 UT 中的 #define private public 做了围栏化:在宏之前先 #include <any> / #include <mutex>,并确保在包含完项目头后立刻 #undef private(避免污染标准库头)。涉及文件主要在 test/ut/**(如 test_align_checker.cpp、test_record_parse.cpp、test_call_stack.cpp、test_sync_sanitizer.cpp、test_race_sanitizer.cpp 等)。 2. 在 csrc/plugin/recorder.h:同GCC9一样增加跳过处理。 3. 在 csrc/race_sanitizer/race_info_display.h:把有同名的 FormatKernelName 重命名为 RaceFormatKernelName,全局唯一,UT 不再报段错误。 4. googletest的CMake配置修改:当使用 GCC 11 及以上版本时,在 BUILD_TESTS 启用且 thirdparty 添加之后、test 目录添加之前,对存在的 gtest、gtest_main、gmock、gmock_main 四个目标追加编译选项 -Wno-error=maybe-uninitialized,以避免 GoogleTest 因 -Werror 将 maybe-uninitialized 警告误判为错误而编译失败。 5. 修正 test_shadow_memory.cpp:对非 aggregate 类型 MemOpRecordForShadow 不再用指定初始化,改为调用构造函数。 6. UT编译改为Debug模式:修改build.py,对UT编译传入Debug模式开关。 - [ ] **涉及代码双合**(贴上另一个PR链接): 无 ---- ### 2. 功能验证 - [ ] **功能自验截图**(请确保不体现个人信息) ![image.png](https://raw.gitcode.com/user-images/assets/8858746/8fa1ea72-6871-4869-9a9e-fd0b0e026410/image.png 'image.png') - [ ] **冒烟是否通过** 不涉及 ---- ### 3. 代码检视 - **要求:** - 合入功能代码大于 200 行,需要sig会议申报代码检视议题,并在PR中标注会议。 - committer评估是否需要在sig会议进行代码检视。 - 参与检视的committer人员名单与检视时间。 - 大于 1000 行代码原则上不允许合入,需进行备案。 - [ ] **是否经过代码检视** 是 - [ ] **是否具备UT测试用例看护** 不涉及 - [ ] **是否需要在sig会议中进行代码检视** 否 - **检视committer人员名单与检视时间:** ---- ### 4. 资料修改自检 - **资料修改:** 不涉及 ---- See merge request: Ascend/mssanitizer!574 个月前
Initial commit5 个月前
Initial commit5 个月前
Initial commit5 个月前
[feature] 卡间竞争检测感知共享内存 Co-authored-by: cycoe<zhuhaonan6@h-partners.com> # message auto-generated for no-merge-commit merge: !146 merge mstx into master [feature] 卡间竞争检测感知共享内存 Created-by: cycoe Commit-by: cycoe Merged-by: ascend-robot Description: ### 1. 修改描述 - **修改原因:** 不同卡上的本地内存可能具有相同的虚拟地址,工具在进行卡间竞争检测时会在这些内存上产生误报 - **修改方案:** 工具通过 mstx 接口感知共享内存范围,仅对共享内存上的内存事件进行竞争检测 - **修改内容:** 1. 通过 DeviceManager 管理当前所有卡上的共享内存信息 2. 卡间竞争检测时,只对与共享内存重叠的内存事件进行检测,防止因不同卡上的内存具有相同的虚拟地址导致的误报问题 - [x] **涉及代码双合**(贴上另一个PR链接):https://gitcode.com/Ascend/msopcom/pull/110 ---- ### 2. 功能验证 - [x] **功能自验截图**(请确保不体现个人信息) 上报共享内存信息后,工具能检测出卡间竞争 ![image.png](https://raw.gitcode.com/user-images/assets/8858746/cf51934c-4103-4949-9120-12cd0744afb5/image.png 'image.png') - [x] **冒烟是否通过** 失败用例与本 PR 无关 [----------] reduce 158 case(s) from 14 test suite(s) [ FAILED ] 5 case(s) from 1 suite(s) failed [ FAILED ] intrinsics_record_test.sink_avg_pool2d_static_test [ FAILED ] intrinsics_record_test.sink_avg_pool2d_mix_test [ FAILED ] intrinsics_record_test.sink_avg_pool2d_static_with_kernel_name_test [ FAILED ] intrinsics_record_test.sink_avg_pool2d_mix_with_kernel_name_test [ FAILED ] intrinsics_record_test.static_stub_vec_calc_intrinsics [----------] reduce done ---- ### 3. 代码检视 - **要求:** - 合入功能代码大于 200 行,需要sig会议申报代码检视议题,并在PR中标注会议。 - committer评估是否需要在sig会议进行代码检视。 - 参与检视的committer人员名单与检视时间。 - 大于 1000 行代码原则上不允许合入,需进行备案。 - [x] **是否经过代码检视** - [x] **是否具备UT测试用例看护** - [ ] **是否需要在sig会议中进行代码检视** - **检视committer人员名单与检视时间:** ---- ### 4. 资料修改自检 - **资料修改:** 不涉及 ---- See merge request: Ascend/mssanitizer!1462 个月前
Initial commit5 个月前
【feature】函数 demangle 模式新增命令行选项控制 Co-authored-by: cycoe<zhuhaonan6@h-partners.com> # message auto-generated for no-merge-commit merge: !27 merge master into master 【feature】函数 demangle 模式新增命令行选项控制 Created-by: cycoe Commit-by: cycoe Merged-by: ascend-robot Description: ### 1. 修改描述 - **修改原因:** 当前已支持显示算子检测状态,但是需要提供命令选项控制 kernel name demangle 模式,防止函数带大量函数参数或者模板参数等影响可读性 - **修改方案:** 提供 --demangle 命令行选项,控制函数名显示格式 - **修改内容:** - 提供 --demangle 命令行选项,控制函数名显示格式 - 动态插桩支持的检测选项显示增加对芯片的区分 - [ ] **涉及代码双合**(贴上另一个PR链接): ---- ### 2. 功能验证 - [x] **功能自验截图**(请确保不体现个人信息) 各选项显示效果如下: - full 选项 `` [mssanitizer] Start memcheck sanitizer on kernel "void Catlass::KernelAdapter<Catlass::Gemm::Kernel::BasicMatmul<Catlass::Gemm::Block::BlockMmad<Catlass::Gemm::MmadAtlasA2Pingpong<true>, Catlass::GemmShape<128u, 256u, 256u>, Catlass::GemmShape<128u, 256u, 64u>, Catlass::Gemm::GemmType<half, Catlass::layout::RowMajor, (AscendC::TPosition)0>, Catlass::Gemm::GemmType<half, Catlass::layout::RowMajor, (AscendC::TPosition)0>, Catlass::Gemm::GemmType<half, Catlass::layout::RowMajor, (AscendC::TPosition)0>, void, Catlass::Gemm::Tile::TileCopy<Catlass::Arch::AtlasA2, Catlass::Gemm::GemmType<half, Catlass::layout::RowMajor, (AscendC::TPosition)0>, Catlass::Gemm::GemmType<half, Catlass::layout::RowMajor, (AscendC::TPosition)0>, Catlass::Gemm::GemmType<half, Catlass::layout::RowMajor, (AscendC::TPosition)0>, void>, Catlass::Gemm::Tile::TileMmad<Catlass::Arch::AtlasA2, Catlass::Gemm::GemmType<half, Catlass::layout::RowMajor, (AscendC::TPosition)0>, Catlass::Gemm::GemmType<half, Catlass::layout::RowMajor, (AscendC::TPosition)0>, void> >, void, Catlass::Gemm::Block::GemmIdentityBlockSwizzle<3u, 0u> > >(Catlass::Gemm::Kernel::BasicMatmul<Catlass::Gemm::Block::BlockMmad<Catlass::Gemm::MmadAtlasA2Pingpong<true>, Catlass::GemmShape<128u, 256u, 256u>, Catlass::GemmShape<128u, 256u, 64u>, Catlass::Gemm::GemmType<half, Catlass::layout::RowMajor, (AscendC::TPosition)0>, Catlass::Gemm::GemmType<half, Catlass::layout::RowMajor, (AscendC::TPosition)0>, Catlass::Gemm::GemmType<half, Catlass::layout::RowMajor, (AscendC::TPosition)0>, void, Catlass::Gemm::Tile::TileCopy<Catlass::Arch::AtlasA2, Catlass::Gemm::GemmType<half, Catlass::layout::RowMajor, (AscendC::TPosition)0>, Catlass::Gemm::GemmType<half, Catlass::layout::RowMajor, (AscendC::TPosition)0>, Catlass::Gemm::GemmType<half, Catlass::layout::RowMajor, (AscendC::TPosition)0>, void>, Catlass::Gemm::Tile::TileMmad<Catlass::Arch::AtlasA2, Catlass::Gemm::GemmType<half, Catlass::layout::RowMajor, (AscendC::TPosition)0>, Catlass::Gemm::GemmType<half, Catlass::layout::RowMajor, (AscendC::TPosition)0>, void> >, void, Catlass::Gemm::Block::GemmIdentityBlockSwizzle<3u, 0u> >::Params)" [mssanitizer] WARN: racecheck and synccheck is not supported on the kernel that without --cce-enable-sanitizer' compiler option, thus it's temporarily ignored. [mssanitizer] Sanitizer finished on kernel "void Catlass::KernelAdapter<Catlass::Gemm::Kernel::BasicMatmul<Catlass::Gemm::Block::BlockMmad<Catlass::Gemm::MmadAtlasA2Pingpong<true>, Catlass::GemmShape<128u, 256u, 256u>, Catlass::GemmShape<128u, 256u, 64u>, Catlass::Gemm::GemmType<half, Catlass::layout::RowMajor, (AscendC::TPosition)0>, Catlass::Gemm::GemmType<half, Catlass::layout::RowMajor, (AscendC::TPosition)0>, Catlass::Gemm::GemmType<half, Catlass::layout::RowMajor, (AscendC::TPosition)0>, void, Catlass::Gemm::Tile::TileCopy<Catlass::Arch::AtlasA2, Catlass::Gemm::GemmType<half, Catlass::layout::RowMajor, (AscendC::TPosition)0>, Catlass::Gemm::GemmType<half, Catlass::layout::RowMajor, (AscendC::TPosition)0>, Catlass::Gemm::GemmType<half, Catlass::layout::RowMajor, (AscendC::TPosition)0>, void>, Catlass::Gemm::Tile::TileMmad<Catlass::Arch::AtlasA2, Catlass::Gemm::GemmType<half, Catlass::layout::RowMajor, (AscendC::TPosition)0>, Catlass::Gemm::GemmType<half, Catlass::layout::RowMajor, (AscendC::TPosition)0>, void> >, void, Catlass::Gemm::Block::GemmIdentityBlockSwizzle<3u, 0u> > >(Catlass::Gemm::Kernel::BasicMatmul<Catlass::Gemm::Block::BlockMmad<Catlass::Gemm::MmadAtlasA2Pingpong<true>, Catlass::GemmShape<128u, 256u, 256u>, Catlass::GemmShape<128u, 256u, 64u>, Catlass::Gemm::GemmType<half, Catlass::layout::RowMajor, (AscendC::TPosition)0>, Catlass::Gemm::GemmType<half, Catlass::layout::RowMajor, (AscendC::TPosition)0>, Catlass::Gemm::GemmType<half, Catlass::layout::RowMajor, (AscendC::TPosition)0>, void, Catlass::Gemm::Tile::TileCopy<Catlass::Arch::AtlasA2, Catlass::Gemm::GemmType<half, Catlass::layout::RowMajor, (AscendC::TPosition)0>, Catlass::Gemm::GemmType<half, Catlass::layout::RowMajor, (AscendC::TPosition)0>, Catlass::Gemm::GemmType<half, Catlass::layout::RowMajor, (AscendC::TPosition)0>, void>, Catlass::Gemm::Tile::TileMmad<Catlass::Arch::AtlasA2, Catlass::Gemm::GemmType<half, Catlass::layout::RowMajor, (AscendC::TPosition)0>, Catlass::Gemm::GemmType<half, Catlass::layout::RowMajor, (AscendC::TPosition)0>, void> >, void, Catlass::Gemm::Block::GemmIdentityBlockSwizzle<3u, 0u> >::Params)". No error detected. - simple [mssanitizer] Start memcheck sanitizer on kernel Catlass::KernelAdapter [mssanitizer] WARN: racecheck and synccheck is not supported on the kernel that without --cce-enable-sanitizer' compiler option, thus it's temporarily ignored. [mssanitizer] Sanitizer finished on kernel Catlass::KernelAdapter. No error detected. - no [mssanitizer] Start memcheck sanitizer on kernel _ZN7Catlass13KernelAdapterINS_4Gemm6Kernel11BasicMatmulINS1_5Block9BlockMmadINS1_19MmadAtlasA2PingpongILb1EEENS_9GemmShapeILj128ELj256ELj256EEENS8_ILj128ELj256ELj64EEENS1_8GemmTypeIDhNS_6layout8RowMajorELN7AscendC9TPositionE0EEESG_SG_vNS1_4Tile8TileCopyINS_4Arch7AtlasA2ESG_SG_SG_vEENSH_8TileMmadISK_SG_SG_vEEEEvNS4_24GemmIdentityBlockSwizzleILj3ELj0EEEEEEEvNT_6ParamsE [mssanitizer] WARN: racecheck and synccheck is not supported on the kernel that without --cce-enable-sanitizer' compiler option, thus it's temporarily ignored. [mssanitizer] Sanitizer finished on kernel _ZN7Catlass13KernelAdapterINS_4Gemm6Kernel11BasicMatmulINS1_5Block9BlockMmadINS1_19MmadAtlasA2PingpongILb1EEENS_9GemmShapeILj128ELj256ELj256EEENS8_ILj128ELj256ELj64EEENS1_8GemmTypeIDhNS_6layout8RowMajorELN7AscendC9TPositionE0EEESG_SG_vNS1_4Tile8TileCopyINS_4Arch7AtlasA2ESG_SG_SG_vEENSH_8TileMmadISK_SG_SG_vEEEEvNS4_24GemmIdentityBlockSwizzleILj3ELj0EEEEEEEvNT_6ParamsE. No error detected. ``` - [x] **冒烟是否通过** 冒烟用例需适配 ---- ### 3. 代码检视 - **要求:** - 合入功能代码大于 200 行,需要sig会议申报代码检视议题,并在PR中标注会议。 - committer评估是否需要在sig会议进行代码检视。 - 参与检视的committer人员名单与检视时间。 - 大于 1000 行代码原则上不允许合入,需进行备案。 - [x] **是否经过代码检视** - [x] **是否具备UT测试用例看护** - [ ] **是否需要在sig会议中进行代码检视** - **检视committer人员名单与检视时间:** ---- ### 4. 资料修改自检 - **资料修改:** 涉及资料修改,需资料同事评审 ---- See merge request: Ascend/mssanitizer!274 个月前