Repository navigation
Release v1.8.1: 代码审查整改 + CI 真跑测试
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归位到 L1algebra_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)
ctest40/40 - 融合 shader 字节锚:RV-07 前后两份源码各编
scan_exprs生成后diff -rq→ 805 个产物零差异 - 拆分等价性:主文件头 + 4 片段 + 尾 vs 拆分前文件逐行相同(纯移动)
- 40HX(Windows + clang++,Debug,GPU)全量构建通过;
ctest42/42、NN_BIND_DEBUG=1 ctest42/42 - CI 全绿:GitHub Actions(Linux + Windows × 普通/
NN_BIND_DEBUG)4 轮ctest各 42 个用例全通过 doc_inventory(L2 违规 0 / 手写残留 0 / virtual 52-52)与doc_align_auditexit 0;gui_cli_auditPASS
仍 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