已关闭
[Feature]: ops-fft三方依赖必要性分析与消减报告 #15
east_yang创建于  7月13日关闭于  25 天前
east_yang成员
7月13日 创建

Thanks for sending a feature request! Please fill in the following template.
感谢提交功能需求!请填写以下模板。

Feature Description / 功能描述

ops-fft 三方依赖必要性分析与消减报告

概览

  • 依赖总数:15(运行时 8 / 打包三方 1 / 构建工具 4)
  • 建议消除:6 个;建议评估可消除性:13个;建议保留:6 个
  • 分析范围:直接依赖(运行时 Python 包、打包三方 makeself、构建工具);传递依赖未纳入。C++ 源码仅依赖 CANN SDK 头文件与 C++ 标准库,无额外三方 C++ 库。

说明:仓库根目录无 third_party/ 实体目录、无 .gitmodulesthird_party/makeself 由 CMake FetchContent 在打包阶段按需下载(见 cmake/third_party/makeself-fetch.cmake)。C++ 源码(src/)经全量扫描未发现任何非标准库三方头文件引用。

依赖分析表

依赖 版本 依赖类型 当前来源 引入原因 合理性分析 消减自研工作量(按照 python 和 c++ 函数来评估) 是否建议消除 消除或优化建议
pyyaml 未锁定 运行时依赖 requirements.txt / PyPI 声明用于解析 YAML 全仓 Python 代码无 import yamlclassify_rule.yaml 等 YAML 文件未被 Python 读取;声明未用 不适用 建议消除 删除声明(代码无 import)
setuptools >=59.0.0 运行时依赖 requirements.txt / PyPI 声明用于打包/构建 Python 包 仓库无 setup.py/setup.cfg/pyproject.toml,Python 脚本均为独立工具脚本,未做 Python 包打包;声明未用 不适用 建议消除 删除声明(无打包配置)
wheel >=0.37.0 运行时依赖 requirements.txt / PyPI 声明用于生成 wheel 包 同上,仓库无 Python 打包流程,wheel 未被任何脚本 import;声明未用 不适用 建议消除 删除声明(无打包配置)
decorator 未锁定 运行时依赖 requirements.txt / PyPI 声明用于装饰器 全仓 Python 代码无 import decorator,未使用其能力;声明未用 不适用 建议消除 删除声明(代码无 import)
sympy 未锁定 运行时依赖 requirements.txt / PyPI 声明用于符号计算 全仓 Python 代码无 import sympy;声明未用 不适用 建议消除 删除声明(代码无 import)
attrs 未锁定 运行时依赖 requirements.txt / PyPI 声明用于属性类 全仓 Python 代码无 import attrs/import attrpkg_parser.pyattrs 仅为普通变量名,非库引用;声明未用 不适用 建议消除 删除声明(代码无 import)
numpy 未声明 运行时依赖 实际 import(未在 requirements.txt 声明) 测试数据生成与 golden 比对 test_helper.py、各算子 gen_data.py/compare_data.py 深度使用 np.fromfile/np.empty 等;事实标准数值库 Py: >50 / C++: 0(大) 建议保留 补充声明到 requirements.txt(用了未声明需补声明)
torch 未声明 运行时依赖 实际 import(未在 requirements.txt 声明) 生成 FFT golden 参考数据 test_helper.py、各 gen_data.py 使用 torch.fft.fft/fft2/rfft/irfft 作为 golden,使用面集中但不可替代(FFT 参考实现) Py: >20 / C++: 0(大) 建议保留 补充声明到 requirements.txt;可标注为测试/开发依赖(extras)
makeself release-2.5.0-patch1 打包三方依赖 CMake FetchContent 下载(gitcode.com) 生成自解压 .run 安装包 cmake/package.cmake/makeself_built_in.cmake 打包阶段使用,非运行时;来源为受控 URL+SHA256 校验,非 vendored 源码 C++: 0 / Py: 0(不适用,外部工具) 建议保留 保留;已为受控下载+哈希校验,无需内置源码
gcc/g++ >=7.3.0(脚本装 9/11) 构建工具 install_deps.sh / apt/yum/brew 编译 C++ 与 ASC 算子源码 编译必需,无替代 不适用 建议保留 CI 固定版本保证可复现
cmake >=3.16.0 构建工具 install_deps.sh / apt/yum/brew 构建系统 构建必需,CMakeLists.txt 声明 cmake_minimum_required(VERSION 3.16) 不适用 建议保留 CI 固定版本保证可复现
make 未锁定 构建工具 install_deps.sh / apt/yum CMake 默认生成器 构建必需 不适用 建议保留 CI 固定版本保证可复现
gawk 未锁定 构建工具 install_deps.sh / apt/yum/brew 脚本中 awk 处理 install_deps.sh/打包脚本使用 awk 解析版本;系统通常自带 awk,gawk 为显式依赖 不适用 建议评估可消除性 评估是否可改用系统自带 awk(POSIX awk),去除 gawk 强制安装
pigz >=2.4 构建工具 install_deps.sh / apt/yum/brew 并行 gzip 加速打包 install_deps.sh 中安装失败可忽略(非致命),使用面窄 不适用 建议评估可消除性 评估是否可改用系统 gzip;当前已为可选,可考虑从主依赖链移除
dos2unix 未锁定 构建工具 install_deps.sh / apt/yum/brew 换行符转换 install_deps.sh 强制安装,但仓库内未见显式调用脚本;疑似遗留依赖 不适用 建议评估可消除性 确认是否有脚本调用 dos2unix,无则从 install_deps.sh 移除

消减结论

高优先级消减项(建议消除,低工作量、高收益)

  1. pyyaml:全仓无 import yaml,声明未用,直接从 requirements.txt 删除。
  2. setuptools:仓库无 Python 打包配置(无 setup.py/pyproject.toml),声明未用,删除。
  3. wheel:同上,无 Python 打包流程,声明未用,删除。
  4. decorator:全仓无 import decorator,声明未用,删除。
  5. sympy:全仓无 import sympy,声明未用,删除。
  6. attrs:全仓无 import attrs/import attrpkg_parser.py 中为变量名),声明未用,删除。

以上 6 项均为「声明未用」,删除声明即可,零代码改动、零风险。删除后 requirements.txt 仅保留实际使用的 numpy、torch(需补充声明)。

待评估依赖(建议评估可消除性)

  • gawkinstall_deps.sh 强制安装 gawk,但脚本中 awk 用法多为 POSIX 兼容(版本解析、字段切分)。需确认是否有用到 gawk 专有扩展(如 gensub、多维数组),若无可改用系统自带 awk,去除强制安装。
  • pigz:当前安装失败已设为可忽略(非致命),使用面窄。需确认打包脚本是否实际调用 pigz,若可改用系统 gzip 则从主依赖链移除。
  • dos2unixinstall_deps.sh 强制安装且失败即退出,但仓库内未见显式调用。需确认是否有隐藏调用(如打包脚本中换行符处理),无则移除。

需保留的核心依赖

  • numpy:测试数据生成与 golden 比对核心依赖,事实标准数值库,深度使用。当前未在 requirements.txt 声明,建议补充声明
  • torch:FFT golden 参考实现(torch.fft.*),不可替代。当前未在 requirements.txt 声明,建议补充声明,可标注为测试/开发依赖。
  • makeself:打包生成 .run 自解压包的必需工具,已为受控下载+SHA256 校验,保留。
  • gcc/g++:C++ 与 ASC 算子编译必需,无替代,CI 固定版本。
  • cmake:构建系统必需(>=3.16),无替代,CI 固定版本。
  • make:CMake 默认生成器,构建必需。

附:分析依据

Use Case / 应用场景

Expected Behavior / 期望行为

Additional Information / 附加信息

likedislike
Eeast_yang成员
7月13日 将 east_yang 设为负责人
Eeast_yang成员
7月13日 修改了issue 的描述
east_yang成员
29 天前 评论:

当前已梳理依赖组件,消除优化中。

likedislike
Ssyy_3597
27 天前 关联了pull request:chore: 消减未使用三方依赖
CANN-robotCANN-robot成员
25 天前 关闭了 issue
CANN-robotCANN-robot成员
25 天前 添加了label:resolved