NPUSim 开发者指南:代码规范、Python 3.7 兼容与本地验证命令详解
NPUSim 开发者指南代码规范、Python 3.7 兼容与本地验证命令详解【免费下载链接】npu-simulatorNPUSim全称NPU Simulator是一款面向算子开发场景的SoC级芯片仿真工具用于分析运行在AI仿真器上的AI任务在各阶段的精度和性能数据如指令执行情况等。该工具有助于用户进行深度性能调优使研发人员在无法获取或芯片资源紧缺的情况下也能获得与真实芯片几乎一致的验证效果和性能反馈。项目地址: https://gitcode.com/cann/npu-simulatorNPUSimNPU Simulator是一款面向算子开发场景的 SoC 级芯片仿真工具用于分析 AI 任务在仿真器上的精度与性能数据。这篇 NPUSim 开发者指南将带你快速掌握本仓库的代码规范、Python 3.7 兼容红线以及本地验证命令让你在参与贡献或本地构建时少走弯路。一、这份开发者指南适合谁看无论你是想给 NPUSim 提交第一个 PR 的新手还是想本地编译验证最新代码的开发者只需关注三件事风格统一代码由ruff统一约束提交前自动检查版本兼容setup.py 声明了python_requires3.7代码必须能在 Python 3.7 上运行提交前验证本地跑一遍完整检查清单避免 CI 打回。完整规范详见 代码规范与本地验证指南社区流程详见 贡献指南。二、代码规范速览ruff 风格与 pre-commit 自动检查2.1 风格约束一览表本仓是纯 Python 工具仓风格约束全部集中在根目录 pyproject.toml 中一眼就能看完配置项取值说明行长度120line-length 120目标版本Python 3.7target-version py37Lint 规则F E9F 为 pyflakes未使用导入/变量等E9 为语法错误 一句话记忆行不超 120 列、不留未使用变量、不写 3.7 不支持的新语法。2.2 开启 pre-commit提交时自动帮你把关仓库通过 .pre-commit-config.yaml 配置了一整套提交钩子覆盖格式、拼写、安全与合规检查。安装只需两步pip install pre-commit pre-commit install之后每次git commit会自动执行检查如果提交后才发现格式问题可以手动补跑pre-commit run --all-files核心钩子速查表钩子作用trailing-whitespace / end-of-file-fixer去行尾空格、文件末尾补换行check-yaml / check-jsonYAML、JSON 语法检查check-merge-conflict禁止合入冲突标记ruff-check / ruff-formatPython Lint 与格式化codespell拼写检查带 CANN/ascend 领域词白名单bandit / pip-audit代码漏洞与依赖漏洞扫描oat-checkOAT 开源合规检查三、Python 3.7 兼容红线这些新语法请勿使用⚠️这是最容易踩的坑即使你本机用的是 Python 3.11/3.12代码也必须兼容 Python 3.7。以下写法一律禁止禁止写法引入版本替代方案海象运算符:3.8拆成两步赋值match语句3.10用if/elifstr.removeprefix()/str.removesuffix()3.9用切片或replace内置泛型注解list[int]直接求值3.9模块顶部加from __future__ import annotationsPEP 604 联合类型X \| Y3.10用typing.Optional/typing.UnionCI 中由 py37_compat.sh 做专项检查。该脚本设计了三层防线比单一工具更严格语法层用ast.parse按 3.7 语法解析直接拒绝 3.7 无法解析的新语法标准库 API 层借助vermin识别哪个版本才加入的标准库成员如typing.TypedDict是 3.8注解层针对list[int]、X | Y这类解析不报错、运行才炸的注解写法逐模块检查是否已声明from __future__ import annotations。本地一键复现bash .gitcode/scripts/py37_compat.sh 3.7 记住一个关键区别延迟注解future import只能推迟注解求值它救不了新版语法或 3.7 没有的新 API。四、本地验证命令清单提交 PR 前照着跑一遍4.1 环境准备先建一个干净的虚拟环境开发工具建议使用 Python 3.11在独立虚拟环境中安装避免污染系统 Python运行代码仍按 3.7 做兼容检查python3.11 -m venv .venv source .venv/bin/activate # Linux / macOSWindows 用 .venv\Scripts\activate python -m pip install -e . python -m pip install -r tests/requirements.txt python -m pip install ruff0.14.14 pre-commit4.0.0 vermin oat-py1.0.1值得放心的是NPUSim 核心功能仿真数据采集与 prof_demo 性能报告生成完全基于 Python 标准库实现零外部运行时依赖测试依赖仅 tests/requirements.txt 中的 pytest 系列。4.2 六步完整检查清单# 1. Lint 检查 ruff check npusim/ tests/ # 2. 格式化检查 ruff format --check --diff npusim/ tests/ # 3. 单元测试 python -m pytest tests/ -v --tbshort --covnpusim --cov-reportterm # 4. Python 3.7 兼容检查 bash .gitcode/scripts/py37_compat.sh 3.7 # 5. 开源合规检查OAT bash .gitcode/scripts/oat_check.sh想快速冒烟一下不依赖 NPU、CANN 或内部账号的基础用例可以先单独跑python -m pytest tests/test_core/test_prof_demo.py -v这些用例使用合成数据和临时 SQLite 数据库表结构见 schema.sql基础 UT 通过不等于真实硬件链路已验证。4.3 构建 wheel 与最小验证参与贡献前还需要确认工程可以完整打包# 清理并构建 wheel 包 bash ./clear.sh ./build_wheel.sh # 运行全量测试 pytest tests/构建脚本见 build_wheel.sh安装到 CANN 环境并执行npusim --help验证生效的方法请参照 快速安装指南。五、常见失败排查别把环境问题当代码问题现象处理建议ruff 报未使用导入/变量删除或确认是否必需F 规则ruff format 报 diff执行ruff format npusim/ tests/原地格式化后重新提交pytest 失败用-v定位具体用例区分实现错误、依赖缺失与环境限制skip不能算通过py37_compat 失败改用 3.7 兼容语法/API延迟注解救不了新版语法与新 APIOAT / pre-commit 无法启动检查虚拟环境、网络与工具安装安装失败应标记为未验证不得写通过 另外注意macOS 上个别用/tmp构造路径的测试可能因实际解析为/private/tmp而报路径断言失败这属于环境相关差异应如实记录而非跳过。六、编码风格与提交约定新手友好版不重复造轮子新增代码优先复用 npusim/core 与 npusim/prof_demo 已有工具函数口径一致日志、报错信息保持与现有模块一致的措辞文档用中文代码标识符与术语除外提交信息采用type: 描述格式例如docs: 完善贡献指南、fix: 修复报告生成type 可选 docs/chore/fix/feat/test 等。七、延伸学习资料想继续深入了解建议按以下路径阅读 代码规范与本地验证指南本文的完整版 贡献指南Issue / PR 流程与常见贡献场景 快速安装指南从零搭建 NPUSim 运行环境 NPUSim 使用指南掌握报告解读与性能分析方法。【免费下载链接】npu-simulatorNPUSim全称NPU Simulator是一款面向算子开发场景的SoC级芯片仿真工具用于分析运行在AI仿真器上的AI任务在各阶段的精度和性能数据如指令执行情况等。该工具有助于用户进行深度性能调优使研发人员在无法获取或芯片资源紧缺的情况下也能获得与真实芯片几乎一致的验证效果和性能反馈。项目地址: https://gitcode.com/cann/npu-simulator创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考