69 lines
4.0 KiB
Markdown
69 lines
4.0 KiB
Markdown
# Task 9b 报告:gpr_poc CLI + 真实数据 headless 度量
|
||
|
||
状态:**PARTIAL / BLOCKED**
|
||
- CLI 编译链接通过;`selftest` PASS(合成数据端到端跑通整条地基)。
|
||
- 真实明星路数据 **BLOCKED**:前置 IO 层 `readIprb` 的 `traces=lastTrace+1` 严格校验
|
||
与真实文件「道数=lastTrace」系统性不符,装配阶段即抛异常,无法实测建体指标。
|
||
**未擅自修改前置/其单测**(被现有测试钉死的契约 + 跨任务边界),故真实指标暂缺,如实记录。
|
||
|
||
---
|
||
|
||
## 1. 交付物(均为本会话自有文件)
|
||
|
||
- `tools/gpr_poc/main.cpp` —— CLI:`build` / `load` / `selftest` 三子命令。
|
||
- `tools/gpr_poc/Probe.hpp` —— header-only 计时(steady_clock)+ 峰值内存(Psapi `PeakWorkingSetSize`)。
|
||
含 `NOMINMAX`/`WIN32_LEAN_AND_MEAN` 防 `<windows.h>` 宏污染 `std::numeric_limits::min/max`。
|
||
- `tools/gpr_poc/CMakeLists.txt` —— 可执行 `gpr_poc`,链 `geopro_io_gpr/geopro_core/geopro_store/geopro_render`
|
||
+ Windows `Psapi`;`vtk_module_autoinit` 注册 VTK 工厂。
|
||
- 顶层 `CMakeLists.txt` —— 加 `add_subdirectory(tools/gpr_poc)`(在 `add_subdirectory(src)` 之后)。
|
||
- `docs/superpowers/plans/poc-results-B.md` —— 实测结果(selftest PASS + 真实数据 BLOCKED 根因表)。
|
||
|
||
注:库目标实际名为 `geopro_store`(brief 写作 geopro_store/已对齐)与 `geopro_data`;
|
||
本工具链 `geopro_store`(分块存储),正确。
|
||
|
||
## 2. 构建
|
||
|
||
- 配置:`cmd /c "build.bat configure"`(preset msvc-release,build/release)成功
|
||
(cmd 被环境劫持但真实命令仍执行;以 build.ninja 出现 gpr_poc target 确认)。
|
||
- 编译:PowerShell + vcvars64 直驱 cmake `--build build/release --target gpr_poc`。
|
||
首次失败:`<windows.h>` min/max 宏污染 → 加 NOMINMAX 修复 → 二次链接成功。
|
||
- 运行需 PATH 带 Qt6/VTK/vcpkg bin(headless 工具仍依赖这些 DLL)。
|
||
|
||
## 3. selftest 结果
|
||
|
||
```
|
||
gpr_poc selftest
|
||
[selftest] GridSpec 2x2x8 dz=0.714286
|
||
[selftest] PASS (exit 0)
|
||
```
|
||
覆盖:assembleGprSurvey → buildGprVolume → write(brick=4) → buildPyramid(1) →
|
||
WholeVolumeSource,断言维度/层数/体素非 blank 全通过。
|
||
|
||
## 4. 真实数据指标
|
||
|
||
**未实测(BLOCKED)**。根因:`readIprb`(`src/io/gpr/IprbReader.cpp:16`)
|
||
`traces=lastTrace+1` 严格字节校验;真实明星路 14 通道每个恰含 `lastTrace` 道(少 1 道),
|
||
逐通道实测一致(详见 poc-results-B.md §2 表)。非 OOM/超时——装配前读入即失败,
|
||
调 `--cellXY` 无法绕过。现有 `tests/io/gpr/test_iprb_reader.cpp:30-31` 锁定该抛异常契约。
|
||
|
||
用的参数:`--line 001 --cellXY 0.2 --cellZ 0.05 --levels 2`(建体未到达)。
|
||
预估几何(非实测,供核对):nx≈11118, ny≈8, nz≈1(深度尺度因土速单位为微米级,
|
||
cellZ=0.05 压成单层——需 POC owner 复核土速/时窗单位与 cellZ)。
|
||
|
||
## 5. 提交前自检
|
||
|
||
- 仅 `git add` 自有文件:`tools/gpr_poc/*`、顶层 `CMakeLists.txt`、
|
||
`docs/superpowers/plans/poc-results-B.md`、本报告 `.superpowers/sdd/task-9b-report.md`。
|
||
- `git diff --cached --stat` 确认无 chart/scatter/quill/rangeslider 等并行会话行。
|
||
- 顶层 CMakeLists 的暂存 diff 应仅含新增的 `add_subdirectory(tools/gpr_poc)` 一行块。
|
||
|
||
## 6. Concerns / 需 owner 决策
|
||
|
||
1. **真实数据 BLOCKER(高)**:`readIprb` 道数契约与真实数据不符。建议放宽为
|
||
「道数 = 文件字节 / (samples·2)」(容忍 ±N 道),或确认 LAST TRACE 语义后去 +1,
|
||
并同步改单测。落地后重跑两条命令即可补齐 §4 真实指标。
|
||
2. **深度尺度(中)**:SOIL VELOCITY=100 m/s(头单位 m/µs ×1e6)→ 深度跨度微米级,
|
||
cellZ=0.05 会把 Z 压成 1 层。影响真实体维度与 9c 渲染基准,需确认单位约定。
|
||
3. 顶层 CMakeLists 当前 working tree 已有他会话的修改(视觉设计/chart 等);本会话只新增
|
||
add_subdirectory 一行,暂存时务必只 stage 该文件并核对 diff,勿带入其他未暂存改动。
|