Skip to content

Release v1.8.1: 代码审查整改 + CI 真跑测试

Choose a tag to compare

@EthanPeng-2048 EthanPeng-2048 released this 12 Oct 15:52
· 119 commits to main since this release

neuralnet.cpp v1.8.1

发布范围:v1.8.0(afcb3d0)→ v1.8.1
主题:代码审查整改(RV-06 … RV-13) + CI 真跑测试与绑定不变量门禁 + 工程化(预设构建 / 格式与贡献指南 / 文档归档) + 编译提速(ccache × PCH)
兼容性:无破坏性 API 变更(引擎接口与 virtual 计数不变、get_*_spirv() 名称/签名不变、create_tensor 签名保留并新增 try_create_tensor、Layer/Loss/Optimizer/Model 公共入口无删除;模型/数据集文件格式零破坏)

亮点速览

方向 变化 收益
算子分派(RV-07) 同一个 ExprOp 原先散在约 9 处(CPU 引擎 3 switch + 语义校验 + 常量折叠 + GLSL emitter 6 处) 收敛为唯一表 expr_op_table.hpp:新增一个逐元素算子只改表里一行(编译期断言强制一致)
VK 后端(RV-08) compute_vk_backend.hpp 6397 行 + 42 个手写 get_*_spirv() getter → 单一注册表;成员体拆 4 片段;主文件 6397 → 1055 行
环境变量(RV-09) 库内 14 处 getenv、≥6 份 helper 收敛到 core_env.hpp 一处(探针门语义不变:门关恒 false 且不求值)
绑定门禁(RV-06) NN_BIND_DEBUG 靠人肉维护 升为 CI 默认门禁(Linux/Windows 各一轮);顺带修掉 matmul_q_impl 边界 cast 的 stamp 漏网
CI 只编不测、打包缺工具 配置加 -DNN_ENABLE_TESTS=ON + 测试步骤;打包补齐 dataset_gen/dataset_convert(入口 6 → 8)
工程化 无预设 / 无格式配置 / 无贡献指南 CMakePresets.json(6 preset + build/test/workflow)、.clang-format/.editorconfig/.gitattributes、CONTRIBUTING.md/CODE_OF_CONDUCT.md
编译提速 用 PCH 的 TU 全部不可缓存 钉进 CCACHE_SLOPPINESS + -fno-pch-timestamp:同一 TU 30.2s → 0.11s(缓存命中)

本批整改条目

  • RV-06 绑定不变量 + NN_BIND_DEBUG 升为 CI 门禁(前置修 matmul_q_impl 的 stamp 漏网)
  • RV-07 算子元数据单一表(CPU 三处 switch + expr_opt 折叠 + GLSL emitter 六处 → 一张表)
  • RV-08 SPIR-V getter 单一注册表 + GpuBackend 物理拆分(纯移动)
  • RV-09 环境变量单一入口 core_env.hpp
  • RV-10 BitLinear 量化判据注释精确化(不改算法)
  • RV-11 precision.hpp 冻结「枚举值 ↔ 序列化 tag」映射 + 往返 static_assert
  • RV-13 nn::Expression/nn::BoolExpression 归位到 L1 algebra_span.hpp
  • CI 修复 6 个 GPU 用例(gpu_test/gpu_f16_test/gpt_offload_test/fused_gpu_test/ce_fusion_test + 复用方 expr_gpu_test)补齐「无设备 → 77 = ctest SKIP」口径;无卡 runner 上不再假红

验收基线

  • 本机 Linux(clang 24,Release,CPU-only)ctest 40/40
  • 融合 shader 字节锚:RV-07 前后两份源码各编 scan_exprs 生成后 diff -rq → 805 个产物零差异
  • 拆分等价性:主文件头 + 4 片段 + 尾 vs 拆分前文件逐行相同(纯移动)
  • 40HX(Windows + clang++,Debug,GPU)全量构建通过;ctest 42/42、NN_BIND_DEBUG=1 ctest 42/42
  • CI 全绿:GitHub Actions(Linux + Windows × 普通/NN_BIND_DEBUG)4 轮 ctest 各 42 个用例全通过
  • doc_inventory(L2 违规 0 / 手写残留 0 / virtual 52-52)与 doc_align_audit exit 0;gui_cli_audit PASS

仍 Open(下一批)

RV-05(GPU 后端显式 shutdown()/引用计数)、RV-12(Loss 直构 IR spec,先设计)、RV-14(VK Descriptor 回收专项审计)。

完整变更:git log v1.8.0..v1.8.1 · 逐条台账见 docs/todo/00-code-review-remediation.md,详细说明见 docs/release-notes/v1.8.1.md