| feat: add gitcode action workflows Co-authored-by: zhangzhiqiang90<zhangzhiqiang90@h-partners.com> # message auto-generated for no-merge-commit merge: !103 merge master into master feat: add gitcode action workflows Created-by: RyanChang2026 Commit-by: zhangzhiqiang90 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #123--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 任务 - [ ] 其他,请描述: See merge request: cann/sip!103 | 1 个月前 |
| sip init public | 10 个月前 |
| Fix: 修复7个issue(#106/#108/#109/#110/#111/#112/#115) YAML重复键/日志fd/越界防护/溢出/内存泄漏 Co-authored-by: yang_3597<mr_yangdong@163.com> # message auto-generated for no-merge-commit merge: !118 merge fix/sip-issues-106-115 into master Fix: 修复7个issue(#106/#108/#109/#110/#111/#112/#115) YAML重复键/日志fd/越界防护/溢出/内存泄漏 Created-by: yang_3597 Commit-by: yang_3597 Merged-by: cann-robot Description: ## 修复内容 本 PR 一次性修复 7 个已确认的低风险缺陷 issue:#106 #108 #109 #110 #111 #112 #115 ### 1. #106/#109 configs/op_list.yaml 顶层 FftStrideOperation 键重复 FftStrideOperation 顶层键出现两次(内容完全一致,中间夹 DdOperation 块)。YAML 规范禁止映射键重复:宽松解析器静默取后者,严格模式加载器(yaml-cpp/Go yaml.v3 strict/SnakeYAML)直接抛 DuplicateKey 异常,且后续维护修改其中一处会造成静默分歧。删除第二处重复块(纯删除,解析结果与现状等价,44 个顶层键不变)。同时按仓库标准格式补充版权头,消除 OAT License Header 存量告警。 ### 2. #108 日志文件描述符为 0 时未关闭导致轮转失效 LogSinkFileSip::CloseFile() 使用 if (currentFd_ > 0) 判断,但 open() 返回 0 是合法情况(如进程启动时 stdin 已关闭)。此时日志 sink 不关闭 fd 0、不重置 currentFileSize_,导致日志轮转和析构清理失效。改为 currentFd_ >= 0,与其他非负 fd 一致处理。 ### 3. #111 GetHomeDir() 访问未初始化指针 getpwuid_r 错误判断条件使用 && 而非 ||:当返回 0(成功)但 result 为 NULL(用户未找到,POSIX 规定此时 pwd 内容未定义)时绕过检查,解引用未初始化的 pwd.pw_dir。条件改为 ||,并对 passwd 结构零初始化双保险。 ### 4. #110 matchR2C_ 数组索引越界 matchR2C_ 缺少兄弟函数 matchC2C_/matchC2R_ 均有的"plan 的 fftSizes 维度数大于张量维度数"防护,循环索引递减为负时 dims[i] 越界读。补齐相同的 plan.fftSizes.size() > last + 1 防护并安全释放 dims。 ### 5. #112 ComplexMatDotTiling 整数溢出 uint32_t numEachCore = m * n / vecCoreNum 中 m*n 在 uint32_t 域相乘,m=n=65536 时回绕为 0,tiling 参数 numEachCore/remainNum 错误。提升为 uint64_t 计算后再截断,正常范围内结果不变。 ### 6. #115 BlasCgemvPlan::SetyInTensor 内存泄漏 构造函数与 CreateTensor 均调用 SetyInTensor,第二次 aclrtMalloc 直接覆盖 yInTensor.data 指针,首次分配的设备内存丢失引用造成泄漏。分配前检查旧指针非空则先 FreeTensorInDevice 释放。 ## 验证 - 环境:Atlas 910B3 / CANN 9.1.0 - bash build.sh --dev 全量编译通过,run 包正常产出 - bash build.sh --ut 单元测试 **125/125 全部 PASS**(覆盖 BLAS Cgemv、FFT 全套用例,包含本次修改路径) - pre-commit 全部 11 项检查 Passed(trailing-whitespace/end-of-file/check-yaml/clang-format/codespell/OAT 等) - op_list.yaml 修改后 YAML 解析验证通过(无重复键、顶层键数量不变) Fixes #106, fixes #108, fixes #109, fixes #110, fixes #111, fixes #112, fixes #115 See merge request: cann/sip!118 | 1 个月前 |
| fix: 批量修复 18 个静态审查 issue(#124~#141):FFT plan 语义/BLAS 参数护栏/缓存错误处理/日志与构建脚本 Co-authored-by: 2301_82146483<2556943601@qq.com> Co-authored-by: gcw_mJtIrnnZ<wuyifan67@h-partners.com> # message auto-generated for no-merge-commit merge: !127 merge fix/issues-124-141 into master fix: 批量修复 18 个静态审查 issue(#124~#141):FFT plan 语义/BLAS 参数护栏/缓存错误处理/日志与构建脚本 Created-by: 2301_82146483 Commit-by: gcw_mJtIrnnZ;2301_82146483 Merged-by: cann-robot Description: ## 描述 批量修复 issues #124~#141(共 18 个静态审查缺陷),覆盖 FFT/BLAS/sip_pta/utils/build 五个模块。 ### FFT(core/fft) - **#124**:asdFftExecV2Separated 在步骤数≠1 时显式返回 ACL_ERROR_INTERNAL_ERROR 并输出 ERROR 日志,不再静默返回成功;asdFftMakePlan2D 增加 fftType 白名单(仅 C2C/C2R/R2C)、asdFftMakePlan3D 白名单(C2C/C2R/R2C/C2C_SEP),C2C_SEP/STFT 等不再落入 default 分支生成"0 步却标记已初始化"的 plan - **#131**:asdFftMakePlan1D(两个重载)/2D/3D 及 asdFftIstftMakePlan 以 try/catch 包裹内部初始化,getC2CCore/InitFftOpPtr 等的 throw 在 API 边界翻译为 ACL_ERROR_INVALID_PARAM,异常不再穿透 C API 导致进程终止;失败路径同时清理半初始化的 steps - **#137**:三个 MakePlan 入口增加 plan.isInitialized() 守卫,重复初始化返回 ACL_ERROR_INVALID_PARAM(与头文件"Any given handle can only be initialized once"契约对齐),steps 不再累积追加 - **#135**:"plan is not initilized." 两处拼写修正为 initialized ### BLAS(core/blas) - **#125**:asdBlasStrmv 增加参数护栏:incx==1、lda==n、uplo ∈ {LOWER, UPPER},非法取值返回 ACL_ERROR_INVALID_PARAM(此前 FULL 被静默当 LOWER、incx/lda 被硬编码覆盖导致静默错误结果);Strmv.md 补充约束说明 - **#129**:BlasPlanCache::MakePlan 改为 bool 返回并先检查 doesPlanExist 拒绝重复绑定;全部 24 处 asdBlasMakeXxxPlan 入口增加重复绑定守卫,消除 insert 失败后 unique_ptr 析构导致的 use-after-free - **#130**:asdBlasSsyr 对齐 ssyr2 的 SIP_OP_CHECK_SHAPE_NOT_MATCH(A, {n,n}) 校验,消除 A 元素数不足时的设备侧越界写 - **#133**:StrmmShapeCheck 中重复两次的 B 校验改为 C(m*n)校验,消除输出张量越界写风险 - **#136**:strmm.cpp 三处复制粘贴日志文案修正(Sswap/Asum → Strmm) - **#138**:asdBlasCmatinvBatched/HCmatinvBatched 对 lda<=0/lda_inv<=0 及 lda!=n 返回 ACL_ERROR_INVALID_PARAM(对齐 ops-solver 与文档"当前约束为 n"),不再仅记 INFO 日志后静默执行 - **#139**:StrmvShapeCheck 增加 SIP_OP_CHECK_INVALID_SHAPE 维度校验,0 维张量在入口被拦截,tiling 层 dims.at(0) 不再抛 std::out_of_range ### sip_pta(torch 适配层) - **#128**:BlasMixCache::get 检查 asdBlasCreate 与 makePlanFunc(签名改为返回 AspbStatus,8 处 lambda 同步加 return)的返回值,失败句柄 asdBlasDestroy 清理且不入缓存,瞬时创建失败不再固化为持续失败 - **#132**:FFTMixCache 的 createFftHandle 检查 asdFftCreate/MakePlan1D/2D/3D 返回值,失败销毁句柄返回空,get 对空句柄不入缓存 - **#134**:destoryFftHandle/destoryBlasHandle 拼写修正为 destroy(2 处定义 + 6 处调用点,全仓 destory 无残留) ### utils / build - **#126**:--mssanitizer 极性修正为 -DUSE_MSSANITIZER=ON,删除死变量 MSSANITIZER_SWITCH - **#127**:实现 safeWriteAll(循环写入 + EINTR 重试)并接入 LogSip,部分写/信号中断不再丢弃整条日志;失败提示补换行 - **#140**:删除 isFlush_ 死成员与 Init 中以字面量伪装环境变量的两处硬编码残留 - **#141**:PYYTHON_FILTER_TOOL 更正为 PYTHON_FILTER_TOOL(含注释引用处),LCOV_BIN_PATH 去掉多余前导斜杠 ## 关联的Issue Fixes #124 Fixes #125 Fixes #126 Fixes #127 Fixes #128 Fixes #129 Fixes #130 Fixes #131 Fixes #132 Fixes #133 Fixes #134 Fixes #135 Fixes #136 Fixes #137 Fixes #138 Fixes #139 Fixes #140 Fixes #141 ## 测试 - **Ascend 910B bash build.sh --dev**:全量编译打包通过(覆盖 core/ 全部修改:22 个 blas 守卫文件、fft_api、istft、log_sink、BlasPlanCache) - **Ascend 910B bash build.sh --ut**:**132/132 全部通过**,无回归;新增 8 个负向用例均在设备上通过: - TestFftPlanNegative.MakePlan2DRejectC2CSep:2D C2C_SEP 返回 ACL_ERROR_INVALID_PARAM(#124) - TestFftPlanNegative.RepeatedInitRejected:1D/2D 重复初始化均被拒绝(#137) - TestBlasStrmvNegative.ParamValidation:incx≠1/incx≤0/lda≠n/uplo=FULL 均返回参数错误(#125) - TestBlasStrmvNegative.ZeroDimTensorRejected:0 维 A 返回 ACL_ERROR_OP_INPUT_NOT_MATCH 不抛异常(#139) - TestBlasStrmmNegative.OutputShapeValidation:C 元素数不足被拦截(#133) - TestBlasSsyr.TestSsyrRejectInvalidAShape:A 元素数不足 n*n 被拦截(#130) - TestBlasCmatinvBatchedNegative.LdaValidation:lda≤0/lda≠n 返回参数错误(#138) - **sip_pta 编译验证**:BlasMixCache/FFTMixCache 及 6 个 asd_blas 改动文件在 torch 2.7.1 + torch_npu 2.7.1 头文件环境下 g++ -fsyntax-only 全部通过(#128/#132/#134) - **#131 说明**:try/catch 的主要触发场景(950 不支持的分解)在 910B 上不可达(910B 走 FFTCoreAny 兜底),本机仅验证编译与 910B 路径回归,950 行为待 950 环境回归验证 ## 文档更新 - docs/zh/API_Reference/BLAS/Strmv.md:约束说明补充"仅支持 lda==n、incx==1、uplo 取 LOWER/UPPER" ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 任务 - [ ] 其他,请描述: See merge request: cann/sip!127 | 21 天前 |
| fix: 批量修复 18 个静态审查 issue(#124~#141):FFT plan 语义/BLAS 参数护栏/缓存错误处理/日志与构建脚本 Co-authored-by: 2301_82146483<2556943601@qq.com> Co-authored-by: gcw_mJtIrnnZ<wuyifan67@h-partners.com> # message auto-generated for no-merge-commit merge: !127 merge fix/issues-124-141 into master fix: 批量修复 18 个静态审查 issue(#124~#141):FFT plan 语义/BLAS 参数护栏/缓存错误处理/日志与构建脚本 Created-by: 2301_82146483 Commit-by: gcw_mJtIrnnZ;2301_82146483 Merged-by: cann-robot Description: ## 描述 批量修复 issues #124~#141(共 18 个静态审查缺陷),覆盖 FFT/BLAS/sip_pta/utils/build 五个模块。 ### FFT(core/fft) - **#124**:asdFftExecV2Separated 在步骤数≠1 时显式返回 ACL_ERROR_INTERNAL_ERROR 并输出 ERROR 日志,不再静默返回成功;asdFftMakePlan2D 增加 fftType 白名单(仅 C2C/C2R/R2C)、asdFftMakePlan3D 白名单(C2C/C2R/R2C/C2C_SEP),C2C_SEP/STFT 等不再落入 default 分支生成"0 步却标记已初始化"的 plan - **#131**:asdFftMakePlan1D(两个重载)/2D/3D 及 asdFftIstftMakePlan 以 try/catch 包裹内部初始化,getC2CCore/InitFftOpPtr 等的 throw 在 API 边界翻译为 ACL_ERROR_INVALID_PARAM,异常不再穿透 C API 导致进程终止;失败路径同时清理半初始化的 steps - **#137**:三个 MakePlan 入口增加 plan.isInitialized() 守卫,重复初始化返回 ACL_ERROR_INVALID_PARAM(与头文件"Any given handle can only be initialized once"契约对齐),steps 不再累积追加 - **#135**:"plan is not initilized." 两处拼写修正为 initialized ### BLAS(core/blas) - **#125**:asdBlasStrmv 增加参数护栏:incx==1、lda==n、uplo ∈ {LOWER, UPPER},非法取值返回 ACL_ERROR_INVALID_PARAM(此前 FULL 被静默当 LOWER、incx/lda 被硬编码覆盖导致静默错误结果);Strmv.md 补充约束说明 - **#129**:BlasPlanCache::MakePlan 改为 bool 返回并先检查 doesPlanExist 拒绝重复绑定;全部 24 处 asdBlasMakeXxxPlan 入口增加重复绑定守卫,消除 insert 失败后 unique_ptr 析构导致的 use-after-free - **#130**:asdBlasSsyr 对齐 ssyr2 的 SIP_OP_CHECK_SHAPE_NOT_MATCH(A, {n,n}) 校验,消除 A 元素数不足时的设备侧越界写 - **#133**:StrmmShapeCheck 中重复两次的 B 校验改为 C(m*n)校验,消除输出张量越界写风险 - **#136**:strmm.cpp 三处复制粘贴日志文案修正(Sswap/Asum → Strmm) - **#138**:asdBlasCmatinvBatched/HCmatinvBatched 对 lda<=0/lda_inv<=0 及 lda!=n 返回 ACL_ERROR_INVALID_PARAM(对齐 ops-solver 与文档"当前约束为 n"),不再仅记 INFO 日志后静默执行 - **#139**:StrmvShapeCheck 增加 SIP_OP_CHECK_INVALID_SHAPE 维度校验,0 维张量在入口被拦截,tiling 层 dims.at(0) 不再抛 std::out_of_range ### sip_pta(torch 适配层) - **#128**:BlasMixCache::get 检查 asdBlasCreate 与 makePlanFunc(签名改为返回 AspbStatus,8 处 lambda 同步加 return)的返回值,失败句柄 asdBlasDestroy 清理且不入缓存,瞬时创建失败不再固化为持续失败 - **#132**:FFTMixCache 的 createFftHandle 检查 asdFftCreate/MakePlan1D/2D/3D 返回值,失败销毁句柄返回空,get 对空句柄不入缓存 - **#134**:destoryFftHandle/destoryBlasHandle 拼写修正为 destroy(2 处定义 + 6 处调用点,全仓 destory 无残留) ### utils / build - **#126**:--mssanitizer 极性修正为 -DUSE_MSSANITIZER=ON,删除死变量 MSSANITIZER_SWITCH - **#127**:实现 safeWriteAll(循环写入 + EINTR 重试)并接入 LogSip,部分写/信号中断不再丢弃整条日志;失败提示补换行 - **#140**:删除 isFlush_ 死成员与 Init 中以字面量伪装环境变量的两处硬编码残留 - **#141**:PYYTHON_FILTER_TOOL 更正为 PYTHON_FILTER_TOOL(含注释引用处),LCOV_BIN_PATH 去掉多余前导斜杠 ## 关联的Issue Fixes #124 Fixes #125 Fixes #126 Fixes #127 Fixes #128 Fixes #129 Fixes #130 Fixes #131 Fixes #132 Fixes #133 Fixes #134 Fixes #135 Fixes #136 Fixes #137 Fixes #138 Fixes #139 Fixes #140 Fixes #141 ## 测试 - **Ascend 910B bash build.sh --dev**:全量编译打包通过(覆盖 core/ 全部修改:22 个 blas 守卫文件、fft_api、istft、log_sink、BlasPlanCache) - **Ascend 910B bash build.sh --ut**:**132/132 全部通过**,无回归;新增 8 个负向用例均在设备上通过: - TestFftPlanNegative.MakePlan2DRejectC2CSep:2D C2C_SEP 返回 ACL_ERROR_INVALID_PARAM(#124) - TestFftPlanNegative.RepeatedInitRejected:1D/2D 重复初始化均被拒绝(#137) - TestBlasStrmvNegative.ParamValidation:incx≠1/incx≤0/lda≠n/uplo=FULL 均返回参数错误(#125) - TestBlasStrmvNegative.ZeroDimTensorRejected:0 维 A 返回 ACL_ERROR_OP_INPUT_NOT_MATCH 不抛异常(#139) - TestBlasStrmmNegative.OutputShapeValidation:C 元素数不足被拦截(#133) - TestBlasSsyr.TestSsyrRejectInvalidAShape:A 元素数不足 n*n 被拦截(#130) - TestBlasCmatinvBatchedNegative.LdaValidation:lda≤0/lda≠n 返回参数错误(#138) - **sip_pta 编译验证**:BlasMixCache/FFTMixCache 及 6 个 asd_blas 改动文件在 torch 2.7.1 + torch_npu 2.7.1 头文件环境下 g++ -fsyntax-only 全部通过(#128/#132/#134) - **#131 说明**:try/catch 的主要触发场景(950 不支持的分解)在 910B 上不可达(910B 走 FFTCoreAny 兜底),本机仅验证编译与 910B 路径回归,950 行为待 950 环境回归验证 ## 文档更新 - docs/zh/API_Reference/BLAS/Strmv.md:约束说明补充"仅支持 lda==n、incx==1、uplo 取 LOWER/UPPER" ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 任务 - [ ] 其他,请描述: See merge request: cann/sip!127 | 21 天前 |
| fix: 修复代码审查发现的健壮性与文档问题(#96-#105) Co-authored-by: yang_3597<mr_yangdong@163.com> # message auto-generated for no-merge-commit merge: !113 merge fix/code-review-issues-96-105 into master fix: 修复代码审查发现的健壮性与文档问题(#96-#105) Created-by: yang_3597 Commit-by: yang_3597 Merged-by: cann-robot Description: ## 修改说明 本 PR 修复代码审查发现的 10 个低风险问题,对应 issue 如下: | Issue | 修复内容 | |-------|----------| | #96 | 修正日志拼写(wthich/initilized/nalloc/ouTensor 等) | | #97 | 删除 BlasCalPlan::SetMaskTensor 无效赋值死语句 | | #98 | 补充文档:返回码差异/日志运维参数/环境变量长度上限 | | #99 | example 失败路径 exit(-1) 改为 return -1 | | #100 | .gitignore 排除 lcov/.ruff_cache/oat_reports 产物目录 | | #101 | AsdTensorInvalidShapeCheck 增加 0 维张量空指针防护 | | #102 | matchC2C_/matchC2R_ 增加维度数前置校验防越界读 | | #103 | TheTensor 删除拷贝构造/拷贝赋值,消除 double-free 隐患 | | #104 | GetTensorNum 改为 std::optional,消除错误码语义混淆 | | #105 | install.sh uninstall() 增加 version.info 容错 | Closes #96 #97 #98 #99 #100 #101 #102 #103 #104 #105 ## 验证 - 编译:cmake + make 100% 通过 - UT:124/125 通过(唯一失败 TestAsdMulComplex64Case0 为存量问题,修改前基线同样失败,该用例比对的是 complex32 输出文件,属测试用例自身缺陷) - Example:cgemv 示例在 910B3 上运行正确(输出 Y=(-12,18) 与预期一致) See merge request: cann/sip!113 | 1 个月前 |
| update copyright Co-authored-by: yang_east<yangdong48@huawei.com> | 10 个月前 |
| sip代码优化 Co-authored-by: east_yang<yangdong48@huawei.com> | 8 个月前 |
| Fix: 修复7个issue(#113/#114/#116/#117/#118/#119/#120) 整数溢出/除零/VLA栈溢出/UAF Co-authored-by: yang_3597<mr_yangdong@163.com> # message auto-generated for no-merge-commit merge: !119 merge fix/issues-113-120 into master Fix: 修复7个issue(#113/#114/#116/#117/#118/#119/#120) 整数溢出/除零/VLA栈溢出/UAF Created-by: yang_3597 Commit-by: yang_3597 Merged-by: cann-robot Description: ## 修复内容 本 PR 修复 7 个 issue:#113 #114 #116 #117 #118 #119 #120(#115 已在主仓关闭,无需处理) ### #113 dft_sep kernel 指针偏移整数溢出 ops/fft/c2c/dft_sep/dft_sep/kernel/dft_sep.cpp 中 gm_b + n * k * sizeof(float) 的 n*k 在 uint32_t 域相乘,fftN > 65536 时溢出回绕,gm_b_imag/gm_b_imag_neg 偏移错误导致越界访问。偏移提升为 uint64_t 计算。 ### #114 ddd_sep kernel 指针偏移整数溢出 ops/fft/c2c3d/ddd_sep/ddd_sep/kernel/ddd_sep.cpp 中 fftSizeX * fftSizeX * sizeof(T_INPUT)(Y/Z 同理)及 batchSize * fftSizeX * fftSizeY * fftSizeZ * sizeof(T_INPUT) 连乘在 uint32_t 域溢出。rotX/rotY/rotZ/temp 四组偏移全部提升为 uint64_t 计算。 ### #116 InitFftAllMixTiling 除零 ops/fft/common/include/tiling/fft_all_mix_tiling_ops_utils.h(950 路径):tempN 不含 2/3/5/7 因子(如素数 11/13/17)时 radix 保持 0,tempN / radix 触发除零。补 radix==0 检查,记录 ERROR 日志并返回 ACL_ERROR_INVALID_PARAM。 ### #117 FftR2CTiling 除零 ops/fft/r2c/fft/fft/tiling/fft_r2c_tiling.cpp:与 #116 相同的 radix 分解模式,tempN 无可用基数时 tempN / radix 除零。补同样的 radix==0 防护。 ### #118 InitRotationMatrix VLA 栈溢出 core/fft/fftcore/dft_core_sep.cpp 中 float cosTable[fftN] / float sinTable[fftN] 为变长栈数组,fftSize 经 asdFftMakePlan1D 上界可达 1<<27,两个数组合计约 1GB 栈分配必然栈溢出。改为 std::unique_ptr<float[]> 堆分配,补 <memory> 头文件与分配失败清理路径。 ### #119 ConvertType use-after-free sip_pta/csrc/pytorch_npu_helper.hpp 的 is_wrapped_number 分支:局部 at::Tensor aclInput 在函数返回时析构释放设备存储,返回的 aclTensor* 持有悬垂指针。改用 thread_local std::vector<at::Tensor> 容器持有转换产物,每次调用追加独立张量。 ### #120 CreateAclTensorFromAtTensor use-after-free 同文件:非连续输入时 at_tensor.contiguous() 产生的局部张量析构后,其设备指针存入返回的 aclTensor* 构成悬垂。同 #119 采用 thread_local 容器方案。 #### #119/#120 方案说明(响应检视意见) 初版使用单个 static at::Tensor 槽位持有,经检视指出存在三个问题并已核实成立: 1. 一次算子执行前会连续转换多个张量(asd_convolve 的 signal/kernel/output、asd_blas_cgemm_batched 的 a/b/c、rs_interpolation_by_sinc 的 5 个输入等),单个 static 槽位被后续调用覆盖——非最后的非连续输入的拷贝被提前释放,UAF 仍然存在; 2. 多个 aclTensor* 别名到同一静态缓冲,读到错误数据; 3. plain static 跨线程共享可变状态,多线程算子分派下存在数据竞态。 最终方案:thread_local std::vector<at::Tensor> 容器,每次调用 push_back 独立持有——无跨调用覆盖(任意个非连续输入均安全)、无别名、线程隔离无竞态,生命周期延续至同线程后续调用,覆盖 EXEC_FUNC 同步执行窗口。 ## 验证 - 环境:Atlas 910B3 / CANN 9.1.0 - bash build.sh --dev 全量编译通过 - bash build.sh --ut 单元测试 **125/125 全部 PASS**(含 FFT 全套用例,覆盖 dft_sep/ddd_sep/tiling 修改路径) - pre-commit 全部 11 项检查 Passed(含 clang-format;pytorch_npu_helper.hpp 的格式重排为该文件存量排版问题的就地修复,纯排版无语义变化) Fixes #113, fixes #114, fixes #116, fixes #117, fixes #118, fixes #119, fixes #120 See merge request: cann/sip!119 | 1 个月前 |
| fix: 修复代码审查发现的健壮性与文档问题(#96-#105) Co-authored-by: yang_3597<mr_yangdong@163.com> # message auto-generated for no-merge-commit merge: !113 merge fix/code-review-issues-96-105 into master fix: 修复代码审查发现的健壮性与文档问题(#96-#105) Created-by: yang_3597 Commit-by: yang_3597 Merged-by: cann-robot Description: ## 修改说明 本 PR 修复代码审查发现的 10 个低风险问题,对应 issue 如下: | Issue | 修复内容 | |-------|----------| | #96 | 修正日志拼写(wthich/initilized/nalloc/ouTensor 等) | | #97 | 删除 BlasCalPlan::SetMaskTensor 无效赋值死语句 | | #98 | 补充文档:返回码差异/日志运维参数/环境变量长度上限 | | #99 | example 失败路径 exit(-1) 改为 return -1 | | #100 | .gitignore 排除 lcov/.ruff_cache/oat_reports 产物目录 | | #101 | AsdTensorInvalidShapeCheck 增加 0 维张量空指针防护 | | #102 | matchC2C_/matchC2R_ 增加维度数前置校验防越界读 | | #103 | TheTensor 删除拷贝构造/拷贝赋值,消除 double-free 隐患 | | #104 | GetTensorNum 改为 std::optional,消除错误码语义混淆 | | #105 | install.sh uninstall() 增加 version.info 容错 | Closes #96 #97 #98 #99 #100 #101 #102 #103 #104 #105 ## 验证 - 编译:cmake + make 100% 通过 - UT:124/125 通过(唯一失败 TestAsdMulComplex64Case0 为存量问题,修改前基线同样失败,该用例比对的是 complex32 输出文件,属测试用例自身缺陷) - Example:cgemv 示例在 910B3 上运行正确(输出 Y=(-12,18) 与预期一致) See merge request: cann/sip!113 | 1 个月前 |
| fix: 批量修复 18 个静态审查 issue(#124~#141):FFT plan 语义/BLAS 参数护栏/缓存错误处理/日志与构建脚本 Co-authored-by: 2301_82146483<2556943601@qq.com> Co-authored-by: gcw_mJtIrnnZ<wuyifan67@h-partners.com> # message auto-generated for no-merge-commit merge: !127 merge fix/issues-124-141 into master fix: 批量修复 18 个静态审查 issue(#124~#141):FFT plan 语义/BLAS 参数护栏/缓存错误处理/日志与构建脚本 Created-by: 2301_82146483 Commit-by: gcw_mJtIrnnZ;2301_82146483 Merged-by: cann-robot Description: ## 描述 批量修复 issues #124~#141(共 18 个静态审查缺陷),覆盖 FFT/BLAS/sip_pta/utils/build 五个模块。 ### FFT(core/fft) - **#124**:asdFftExecV2Separated 在步骤数≠1 时显式返回 ACL_ERROR_INTERNAL_ERROR 并输出 ERROR 日志,不再静默返回成功;asdFftMakePlan2D 增加 fftType 白名单(仅 C2C/C2R/R2C)、asdFftMakePlan3D 白名单(C2C/C2R/R2C/C2C_SEP),C2C_SEP/STFT 等不再落入 default 分支生成"0 步却标记已初始化"的 plan - **#131**:asdFftMakePlan1D(两个重载)/2D/3D 及 asdFftIstftMakePlan 以 try/catch 包裹内部初始化,getC2CCore/InitFftOpPtr 等的 throw 在 API 边界翻译为 ACL_ERROR_INVALID_PARAM,异常不再穿透 C API 导致进程终止;失败路径同时清理半初始化的 steps - **#137**:三个 MakePlan 入口增加 plan.isInitialized() 守卫,重复初始化返回 ACL_ERROR_INVALID_PARAM(与头文件"Any given handle can only be initialized once"契约对齐),steps 不再累积追加 - **#135**:"plan is not initilized." 两处拼写修正为 initialized ### BLAS(core/blas) - **#125**:asdBlasStrmv 增加参数护栏:incx==1、lda==n、uplo ∈ {LOWER, UPPER},非法取值返回 ACL_ERROR_INVALID_PARAM(此前 FULL 被静默当 LOWER、incx/lda 被硬编码覆盖导致静默错误结果);Strmv.md 补充约束说明 - **#129**:BlasPlanCache::MakePlan 改为 bool 返回并先检查 doesPlanExist 拒绝重复绑定;全部 24 处 asdBlasMakeXxxPlan 入口增加重复绑定守卫,消除 insert 失败后 unique_ptr 析构导致的 use-after-free - **#130**:asdBlasSsyr 对齐 ssyr2 的 SIP_OP_CHECK_SHAPE_NOT_MATCH(A, {n,n}) 校验,消除 A 元素数不足时的设备侧越界写 - **#133**:StrmmShapeCheck 中重复两次的 B 校验改为 C(m*n)校验,消除输出张量越界写风险 - **#136**:strmm.cpp 三处复制粘贴日志文案修正(Sswap/Asum → Strmm) - **#138**:asdBlasCmatinvBatched/HCmatinvBatched 对 lda<=0/lda_inv<=0 及 lda!=n 返回 ACL_ERROR_INVALID_PARAM(对齐 ops-solver 与文档"当前约束为 n"),不再仅记 INFO 日志后静默执行 - **#139**:StrmvShapeCheck 增加 SIP_OP_CHECK_INVALID_SHAPE 维度校验,0 维张量在入口被拦截,tiling 层 dims.at(0) 不再抛 std::out_of_range ### sip_pta(torch 适配层) - **#128**:BlasMixCache::get 检查 asdBlasCreate 与 makePlanFunc(签名改为返回 AspbStatus,8 处 lambda 同步加 return)的返回值,失败句柄 asdBlasDestroy 清理且不入缓存,瞬时创建失败不再固化为持续失败 - **#132**:FFTMixCache 的 createFftHandle 检查 asdFftCreate/MakePlan1D/2D/3D 返回值,失败销毁句柄返回空,get 对空句柄不入缓存 - **#134**:destoryFftHandle/destoryBlasHandle 拼写修正为 destroy(2 处定义 + 6 处调用点,全仓 destory 无残留) ### utils / build - **#126**:--mssanitizer 极性修正为 -DUSE_MSSANITIZER=ON,删除死变量 MSSANITIZER_SWITCH - **#127**:实现 safeWriteAll(循环写入 + EINTR 重试)并接入 LogSip,部分写/信号中断不再丢弃整条日志;失败提示补换行 - **#140**:删除 isFlush_ 死成员与 Init 中以字面量伪装环境变量的两处硬编码残留 - **#141**:PYYTHON_FILTER_TOOL 更正为 PYTHON_FILTER_TOOL(含注释引用处),LCOV_BIN_PATH 去掉多余前导斜杠 ## 关联的Issue Fixes #124 Fixes #125 Fixes #126 Fixes #127 Fixes #128 Fixes #129 Fixes #130 Fixes #131 Fixes #132 Fixes #133 Fixes #134 Fixes #135 Fixes #136 Fixes #137 Fixes #138 Fixes #139 Fixes #140 Fixes #141 ## 测试 - **Ascend 910B bash build.sh --dev**:全量编译打包通过(覆盖 core/ 全部修改:22 个 blas 守卫文件、fft_api、istft、log_sink、BlasPlanCache) - **Ascend 910B bash build.sh --ut**:**132/132 全部通过**,无回归;新增 8 个负向用例均在设备上通过: - TestFftPlanNegative.MakePlan2DRejectC2CSep:2D C2C_SEP 返回 ACL_ERROR_INVALID_PARAM(#124) - TestFftPlanNegative.RepeatedInitRejected:1D/2D 重复初始化均被拒绝(#137) - TestBlasStrmvNegative.ParamValidation:incx≠1/incx≤0/lda≠n/uplo=FULL 均返回参数错误(#125) - TestBlasStrmvNegative.ZeroDimTensorRejected:0 维 A 返回 ACL_ERROR_OP_INPUT_NOT_MATCH 不抛异常(#139) - TestBlasStrmmNegative.OutputShapeValidation:C 元素数不足被拦截(#133) - TestBlasSsyr.TestSsyrRejectInvalidAShape:A 元素数不足 n*n 被拦截(#130) - TestBlasCmatinvBatchedNegative.LdaValidation:lda≤0/lda≠n 返回参数错误(#138) - **sip_pta 编译验证**:BlasMixCache/FFTMixCache 及 6 个 asd_blas 改动文件在 torch 2.7.1 + torch_npu 2.7.1 头文件环境下 g++ -fsyntax-only 全部通过(#128/#132/#134) - **#131 说明**:try/catch 的主要触发场景(950 不支持的分解)在 910B 上不可达(910B 走 FFTCoreAny 兜底),本机仅验证编译与 910B 路径回归,950 行为待 950 环境回归验证 ## 文档更新 - docs/zh/API_Reference/BLAS/Strmv.md:约束说明补充"仅支持 lda==n、incx==1、uplo 取 LOWER/UPPER" ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 任务 - [ ] 其他,请描述: See merge request: cann/sip!127 | 21 天前 |
| fix: 批量修复 18 个静态审查 issue(#124~#141):FFT plan 语义/BLAS 参数护栏/缓存错误处理/日志与构建脚本 Co-authored-by: 2301_82146483<2556943601@qq.com> Co-authored-by: gcw_mJtIrnnZ<wuyifan67@h-partners.com> # message auto-generated for no-merge-commit merge: !127 merge fix/issues-124-141 into master fix: 批量修复 18 个静态审查 issue(#124~#141):FFT plan 语义/BLAS 参数护栏/缓存错误处理/日志与构建脚本 Created-by: 2301_82146483 Commit-by: gcw_mJtIrnnZ;2301_82146483 Merged-by: cann-robot Description: ## 描述 批量修复 issues #124~#141(共 18 个静态审查缺陷),覆盖 FFT/BLAS/sip_pta/utils/build 五个模块。 ### FFT(core/fft) - **#124**:asdFftExecV2Separated 在步骤数≠1 时显式返回 ACL_ERROR_INTERNAL_ERROR 并输出 ERROR 日志,不再静默返回成功;asdFftMakePlan2D 增加 fftType 白名单(仅 C2C/C2R/R2C)、asdFftMakePlan3D 白名单(C2C/C2R/R2C/C2C_SEP),C2C_SEP/STFT 等不再落入 default 分支生成"0 步却标记已初始化"的 plan - **#131**:asdFftMakePlan1D(两个重载)/2D/3D 及 asdFftIstftMakePlan 以 try/catch 包裹内部初始化,getC2CCore/InitFftOpPtr 等的 throw 在 API 边界翻译为 ACL_ERROR_INVALID_PARAM,异常不再穿透 C API 导致进程终止;失败路径同时清理半初始化的 steps - **#137**:三个 MakePlan 入口增加 plan.isInitialized() 守卫,重复初始化返回 ACL_ERROR_INVALID_PARAM(与头文件"Any given handle can only be initialized once"契约对齐),steps 不再累积追加 - **#135**:"plan is not initilized." 两处拼写修正为 initialized ### BLAS(core/blas) - **#125**:asdBlasStrmv 增加参数护栏:incx==1、lda==n、uplo ∈ {LOWER, UPPER},非法取值返回 ACL_ERROR_INVALID_PARAM(此前 FULL 被静默当 LOWER、incx/lda 被硬编码覆盖导致静默错误结果);Strmv.md 补充约束说明 - **#129**:BlasPlanCache::MakePlan 改为 bool 返回并先检查 doesPlanExist 拒绝重复绑定;全部 24 处 asdBlasMakeXxxPlan 入口增加重复绑定守卫,消除 insert 失败后 unique_ptr 析构导致的 use-after-free - **#130**:asdBlasSsyr 对齐 ssyr2 的 SIP_OP_CHECK_SHAPE_NOT_MATCH(A, {n,n}) 校验,消除 A 元素数不足时的设备侧越界写 - **#133**:StrmmShapeCheck 中重复两次的 B 校验改为 C(m*n)校验,消除输出张量越界写风险 - **#136**:strmm.cpp 三处复制粘贴日志文案修正(Sswap/Asum → Strmm) - **#138**:asdBlasCmatinvBatched/HCmatinvBatched 对 lda<=0/lda_inv<=0 及 lda!=n 返回 ACL_ERROR_INVALID_PARAM(对齐 ops-solver 与文档"当前约束为 n"),不再仅记 INFO 日志后静默执行 - **#139**:StrmvShapeCheck 增加 SIP_OP_CHECK_INVALID_SHAPE 维度校验,0 维张量在入口被拦截,tiling 层 dims.at(0) 不再抛 std::out_of_range ### sip_pta(torch 适配层) - **#128**:BlasMixCache::get 检查 asdBlasCreate 与 makePlanFunc(签名改为返回 AspbStatus,8 处 lambda 同步加 return)的返回值,失败句柄 asdBlasDestroy 清理且不入缓存,瞬时创建失败不再固化为持续失败 - **#132**:FFTMixCache 的 createFftHandle 检查 asdFftCreate/MakePlan1D/2D/3D 返回值,失败销毁句柄返回空,get 对空句柄不入缓存 - **#134**:destoryFftHandle/destoryBlasHandle 拼写修正为 destroy(2 处定义 + 6 处调用点,全仓 destory 无残留) ### utils / build - **#126**:--mssanitizer 极性修正为 -DUSE_MSSANITIZER=ON,删除死变量 MSSANITIZER_SWITCH - **#127**:实现 safeWriteAll(循环写入 + EINTR 重试)并接入 LogSip,部分写/信号中断不再丢弃整条日志;失败提示补换行 - **#140**:删除 isFlush_ 死成员与 Init 中以字面量伪装环境变量的两处硬编码残留 - **#141**:PYYTHON_FILTER_TOOL 更正为 PYTHON_FILTER_TOOL(含注释引用处),LCOV_BIN_PATH 去掉多余前导斜杠 ## 关联的Issue Fixes #124 Fixes #125 Fixes #126 Fixes #127 Fixes #128 Fixes #129 Fixes #130 Fixes #131 Fixes #132 Fixes #133 Fixes #134 Fixes #135 Fixes #136 Fixes #137 Fixes #138 Fixes #139 Fixes #140 Fixes #141 ## 测试 - **Ascend 910B bash build.sh --dev**:全量编译打包通过(覆盖 core/ 全部修改:22 个 blas 守卫文件、fft_api、istft、log_sink、BlasPlanCache) - **Ascend 910B bash build.sh --ut**:**132/132 全部通过**,无回归;新增 8 个负向用例均在设备上通过: - TestFftPlanNegative.MakePlan2DRejectC2CSep:2D C2C_SEP 返回 ACL_ERROR_INVALID_PARAM(#124) - TestFftPlanNegative.RepeatedInitRejected:1D/2D 重复初始化均被拒绝(#137) - TestBlasStrmvNegative.ParamValidation:incx≠1/incx≤0/lda≠n/uplo=FULL 均返回参数错误(#125) - TestBlasStrmvNegative.ZeroDimTensorRejected:0 维 A 返回 ACL_ERROR_OP_INPUT_NOT_MATCH 不抛异常(#139) - TestBlasStrmmNegative.OutputShapeValidation:C 元素数不足被拦截(#133) - TestBlasSsyr.TestSsyrRejectInvalidAShape:A 元素数不足 n*n 被拦截(#130) - TestBlasCmatinvBatchedNegative.LdaValidation:lda≤0/lda≠n 返回参数错误(#138) - **sip_pta 编译验证**:BlasMixCache/FFTMixCache 及 6 个 asd_blas 改动文件在 torch 2.7.1 + torch_npu 2.7.1 头文件环境下 g++ -fsyntax-only 全部通过(#128/#132/#134) - **#131 说明**:try/catch 的主要触发场景(950 不支持的分解)在 910B 上不可达(910B 走 FFTCoreAny 兜底),本机仅验证编译与 910B 路径回归,950 行为待 950 环境回归验证 ## 文档更新 - docs/zh/API_Reference/BLAS/Strmv.md:约束说明补充"仅支持 lda==n、incx==1、uplo 取 LOWER/UPPER" ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 任务 - [ ] 其他,请描述: See merge request: cann/sip!127 | 21 天前 |
| 完善 pre-commit配置并新增 clang-format 规则 Co-authored-by: east_yang<yangdong48@huawei.com> # message auto-generated for no-merge-commit merge: !96 merge master into master 完善 pre-commit配置并新增 clang-format 规则 Created-by: east_yang Commit-by: east_yang Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 补齐sip仓pre-commit能力 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #123--> https://gitcode.com/cann/sip/issues/73 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 任务 - [ ] 其他,请描述: See merge request: cann/sip!96 | 2 个月前 |
| fix: 修复代码审查发现的健壮性与文档问题(#96-#105) Co-authored-by: yang_3597<mr_yangdong@163.com> # message auto-generated for no-merge-commit merge: !113 merge fix/code-review-issues-96-105 into master fix: 修复代码审查发现的健壮性与文档问题(#96-#105) Created-by: yang_3597 Commit-by: yang_3597 Merged-by: cann-robot Description: ## 修改说明 本 PR 修复代码审查发现的 10 个低风险问题,对应 issue 如下: | Issue | 修复内容 | |-------|----------| | #96 | 修正日志拼写(wthich/initilized/nalloc/ouTensor 等) | | #97 | 删除 BlasCalPlan::SetMaskTensor 无效赋值死语句 | | #98 | 补充文档:返回码差异/日志运维参数/环境变量长度上限 | | #99 | example 失败路径 exit(-1) 改为 return -1 | | #100 | .gitignore 排除 lcov/.ruff_cache/oat_reports 产物目录 | | #101 | AsdTensorInvalidShapeCheck 增加 0 维张量空指针防护 | | #102 | matchC2C_/matchC2R_ 增加维度数前置校验防越界读 | | #103 | TheTensor 删除拷贝构造/拷贝赋值,消除 double-free 隐患 | | #104 | GetTensorNum 改为 std::optional,消除错误码语义混淆 | | #105 | install.sh uninstall() 增加 version.info 容错 | Closes #96 #97 #98 #99 #100 #101 #102 #103 #104 #105 ## 验证 - 编译:cmake + make 100% 通过 - UT:124/125 通过(唯一失败 TestAsdMulComplex64Case0 为存量问题,修改前基线同样失败,该用例比对的是 complex32 输出文件,属测试用例自身缺陷) - Example:cgemv 示例在 910B3 上运行正确(输出 Y=(-12,18) 与预期一致) See merge request: cann/sip!113 | 1 个月前 |
| 给md文档增加芯片的标签 Co-authored-by: fwx1169505<fengying27@h-partners.com> # message auto-generated for no-merge-commit merge: !126 merge master into master 给md文档增加芯片的标签 Created-by: fengying555682 Commit-by: fwx1169505 Merged-by: cann-robot Description: ## 描述 和接口相关的md文档都需要打上芯片标签,用于后续发布使用 ## 关联的Issue [#143](https://gitcode.com/cann/sip/issues/143) ## 测试 已经完成文档语法和链接有效性验证 ## 文档更新 doc目录下的文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x ] 文档更新 - [ ] 任务 - [ ] 其他,请描述: See merge request: cann/sip!126 | 21 天前 |
| 修复依赖声明、CMakeList等易用性问题 Co-authored-by: demoauguste<zhanghao418@huawei.com> # message auto-generated for no-merge-commit merge: !67 merge master into master 修复依赖声明、CMakeList等易用性问题 Created-by: demoauguste Commit-by: demoauguste Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 修复依赖声明、CMakeList等易用性问题。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #123--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 任务 - [ ] 其他,请描述: See merge request: cann/sip!67 | 5 个月前 |
| sip init public | 10 个月前 |
| issue检视问题修复,补充安装依赖脚本 Co-authored-by: east_yang<yangdong48@huawei.com> # message auto-generated for no-merge-commit merge: !78 merge master into master issue检视问题修复,补充安装依赖脚本 Created-by: east_yang Commit-by: east_yang Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #123--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 任务 - [ ] 其他,请描述: See merge request: cann/sip!78 | 4 个月前 |
| sip代码优化 Co-authored-by: east_yang<yangdong48@huawei.com> | 8 个月前 |
| 修改md文档的标题为英文 Co-authored-by: fwx1169505<fengying27@h-partners.com> # message auto-generated for no-merge-commit merge: !106 merge master into master 修改md文档的标题为英文 Created-by: fengying555682 Commit-by: fwx1169505 Merged-by: cann-robot Description: ## 描述 doc目录下的部分md文档标题需要改为英文,新增developing_a_simple_operator的英文版本 ## 关联的Issue [#81](https://gitcode.com/cann/sip/issues/81) ## 测试 已经检查标签完成性、链接正确性 ## 文档更新 1、docs目录下的md文档 2、FFT_1D 3、更新cgerc、cdotc、cdotu的示例文件 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 任务 - [ ] 其他,请描述: See merge request: cann/sip!106 | 1 个月前 |
| 增加部分md文档的英文版本 Co-authored-by: fwx1169505<fengying27@h-partners.com> # message auto-generated for no-merge-commit merge: !108 merge master into master 增加部分md文档的英文版本 Created-by: fengying555682 Commit-by: fwx1169505 Merged-by: cann-robot Description: ## 描述 doc目录下的部分md文档增加英文版本 ## 关联的Issue [#81](https://gitcode.com/cann/sip/issues/81) ## 测试 已经检查标签完成性、链接正确性 ## 文档更新 新增如下英文md文档: compilation_build_en.md、contributing_guide_en.md、header_files_library_files_en.md、README.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 任务 - [ ] 其他,请描述: See merge request: cann/sip!108 | 1 个月前 |
| modified md files(for readability improvement) Co-authored-by: ”fwx1169505“<fengying27@h-partners.com> # message auto-generated for no-merge-commit merge: !60 merge master into master modified md files(for readability improvement) Created-by: fengying555682 Commit-by: ”fwx1169505“ Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #123--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 任务 - [ ] 其他,请描述: See merge request: cann/sip!60 | 5 个月前 |
| sip代码优化 Co-authored-by: east_yang<yangdong48@huawei.com> | 8 个月前 |
| sip代码优化 Co-authored-by: east_yang<yangdong48@huawei.com> | 8 个月前 |
| fix: 批量修复 18 个静态审查 issue(#124~#141):FFT plan 语义/BLAS 参数护栏/缓存错误处理/日志与构建脚本 Co-authored-by: 2301_82146483<2556943601@qq.com> Co-authored-by: gcw_mJtIrnnZ<wuyifan67@h-partners.com> # message auto-generated for no-merge-commit merge: !127 merge fix/issues-124-141 into master fix: 批量修复 18 个静态审查 issue(#124~#141):FFT plan 语义/BLAS 参数护栏/缓存错误处理/日志与构建脚本 Created-by: 2301_82146483 Commit-by: gcw_mJtIrnnZ;2301_82146483 Merged-by: cann-robot Description: ## 描述 批量修复 issues #124~#141(共 18 个静态审查缺陷),覆盖 FFT/BLAS/sip_pta/utils/build 五个模块。 ### FFT(core/fft) - **#124**:asdFftExecV2Separated 在步骤数≠1 时显式返回 ACL_ERROR_INTERNAL_ERROR 并输出 ERROR 日志,不再静默返回成功;asdFftMakePlan2D 增加 fftType 白名单(仅 C2C/C2R/R2C)、asdFftMakePlan3D 白名单(C2C/C2R/R2C/C2C_SEP),C2C_SEP/STFT 等不再落入 default 分支生成"0 步却标记已初始化"的 plan - **#131**:asdFftMakePlan1D(两个重载)/2D/3D 及 asdFftIstftMakePlan 以 try/catch 包裹内部初始化,getC2CCore/InitFftOpPtr 等的 throw 在 API 边界翻译为 ACL_ERROR_INVALID_PARAM,异常不再穿透 C API 导致进程终止;失败路径同时清理半初始化的 steps - **#137**:三个 MakePlan 入口增加 plan.isInitialized() 守卫,重复初始化返回 ACL_ERROR_INVALID_PARAM(与头文件"Any given handle can only be initialized once"契约对齐),steps 不再累积追加 - **#135**:"plan is not initilized." 两处拼写修正为 initialized ### BLAS(core/blas) - **#125**:asdBlasStrmv 增加参数护栏:incx==1、lda==n、uplo ∈ {LOWER, UPPER},非法取值返回 ACL_ERROR_INVALID_PARAM(此前 FULL 被静默当 LOWER、incx/lda 被硬编码覆盖导致静默错误结果);Strmv.md 补充约束说明 - **#129**:BlasPlanCache::MakePlan 改为 bool 返回并先检查 doesPlanExist 拒绝重复绑定;全部 24 处 asdBlasMakeXxxPlan 入口增加重复绑定守卫,消除 insert 失败后 unique_ptr 析构导致的 use-after-free - **#130**:asdBlasSsyr 对齐 ssyr2 的 SIP_OP_CHECK_SHAPE_NOT_MATCH(A, {n,n}) 校验,消除 A 元素数不足时的设备侧越界写 - **#133**:StrmmShapeCheck 中重复两次的 B 校验改为 C(m*n)校验,消除输出张量越界写风险 - **#136**:strmm.cpp 三处复制粘贴日志文案修正(Sswap/Asum → Strmm) - **#138**:asdBlasCmatinvBatched/HCmatinvBatched 对 lda<=0/lda_inv<=0 及 lda!=n 返回 ACL_ERROR_INVALID_PARAM(对齐 ops-solver 与文档"当前约束为 n"),不再仅记 INFO 日志后静默执行 - **#139**:StrmvShapeCheck 增加 SIP_OP_CHECK_INVALID_SHAPE 维度校验,0 维张量在入口被拦截,tiling 层 dims.at(0) 不再抛 std::out_of_range ### sip_pta(torch 适配层) - **#128**:BlasMixCache::get 检查 asdBlasCreate 与 makePlanFunc(签名改为返回 AspbStatus,8 处 lambda 同步加 return)的返回值,失败句柄 asdBlasDestroy 清理且不入缓存,瞬时创建失败不再固化为持续失败 - **#132**:FFTMixCache 的 createFftHandle 检查 asdFftCreate/MakePlan1D/2D/3D 返回值,失败销毁句柄返回空,get 对空句柄不入缓存 - **#134**:destoryFftHandle/destoryBlasHandle 拼写修正为 destroy(2 处定义 + 6 处调用点,全仓 destory 无残留) ### utils / build - **#126**:--mssanitizer 极性修正为 -DUSE_MSSANITIZER=ON,删除死变量 MSSANITIZER_SWITCH - **#127**:实现 safeWriteAll(循环写入 + EINTR 重试)并接入 LogSip,部分写/信号中断不再丢弃整条日志;失败提示补换行 - **#140**:删除 isFlush_ 死成员与 Init 中以字面量伪装环境变量的两处硬编码残留 - **#141**:PYYTHON_FILTER_TOOL 更正为 PYTHON_FILTER_TOOL(含注释引用处),LCOV_BIN_PATH 去掉多余前导斜杠 ## 关联的Issue Fixes #124 Fixes #125 Fixes #126 Fixes #127 Fixes #128 Fixes #129 Fixes #130 Fixes #131 Fixes #132 Fixes #133 Fixes #134 Fixes #135 Fixes #136 Fixes #137 Fixes #138 Fixes #139 Fixes #140 Fixes #141 ## 测试 - **Ascend 910B bash build.sh --dev**:全量编译打包通过(覆盖 core/ 全部修改:22 个 blas 守卫文件、fft_api、istft、log_sink、BlasPlanCache) - **Ascend 910B bash build.sh --ut**:**132/132 全部通过**,无回归;新增 8 个负向用例均在设备上通过: - TestFftPlanNegative.MakePlan2DRejectC2CSep:2D C2C_SEP 返回 ACL_ERROR_INVALID_PARAM(#124) - TestFftPlanNegative.RepeatedInitRejected:1D/2D 重复初始化均被拒绝(#137) - TestBlasStrmvNegative.ParamValidation:incx≠1/incx≤0/lda≠n/uplo=FULL 均返回参数错误(#125) - TestBlasStrmvNegative.ZeroDimTensorRejected:0 维 A 返回 ACL_ERROR_OP_INPUT_NOT_MATCH 不抛异常(#139) - TestBlasStrmmNegative.OutputShapeValidation:C 元素数不足被拦截(#133) - TestBlasSsyr.TestSsyrRejectInvalidAShape:A 元素数不足 n*n 被拦截(#130) - TestBlasCmatinvBatchedNegative.LdaValidation:lda≤0/lda≠n 返回参数错误(#138) - **sip_pta 编译验证**:BlasMixCache/FFTMixCache 及 6 个 asd_blas 改动文件在 torch 2.7.1 + torch_npu 2.7.1 头文件环境下 g++ -fsyntax-only 全部通过(#128/#132/#134) - **#131 说明**:try/catch 的主要触发场景(950 不支持的分解)在 910B 上不可达(910B 走 FFTCoreAny 兜底),本机仅验证编译与 910B 路径回归,950 行为待 950 环境回归验证 ## 文档更新 - docs/zh/API_Reference/BLAS/Strmv.md:约束说明补充"仅支持 lda==n、incx==1、uplo 取 LOWER/UPPER" ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 任务 - [ ] 其他,请描述: See merge request: cann/sip!127 | 21 天前 |
| fix: 修复 scripts/ 下 ruff 告警及 install_deps.sh dos2unix 问题 Co-authored-by: yang_3597<mr_yangdong@163.com> # message auto-generated for no-merge-commit merge: !112 merge master into master fix: 修复 scripts/ 下 ruff 告警及 install_deps.sh dos2unix 问题 Created-by: yang_3597 Commit-by: yang_3597 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 修复 scripts/ 下 ruff 告警及 install_deps.sh dos2unix 问题 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #123--> https://gitcode.com/cann/sip/issues/88 https://gitcode.com/cann/sip/issues/89 https://gitcode.com/cann/sip/issues/90 https://gitcode.com/cann/sip/issues/91 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 任务 - [ ] 其他,请描述: See merge request: cann/sip!112 | 1 个月前 |
| chore: 消减未使用三方依赖 Co-authored-by: yang_3597<mr_yangdong@163.com> # message auto-generated for no-merge-commit merge: !111 merge master into master chore: 消减未使用三方依赖 Created-by: yang_3597 Commit-by: yang_3597 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 消减未使用三方依赖 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #123--> https://gitcode.com/cann/sip/issues/75 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [x] 任务 - [ ] 其他,请描述: See merge request: cann/sip!111 | 1 个月前 |
| 更新SiP主干版本配套说明资料 Co-authored-by: east_yang<yangdong48@huawei.com> # message auto-generated for no-merge-commit merge: !75 merge master into master 更新SiP主干版本配套说明资料 Created-by: east_yang Commit-by: east_yang Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #123--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 任务 - [ ] 其他,请描述: See merge request: cann/sip!75 | 4 个月前 |