4.0 KiB
4.0 KiB
Task 9b 报告:gpr_poc CLI + 真实数据 headless 度量
状态:PARTIAL / BLOCKED
- CLI 编译链接通过;
selftestPASS(合成数据端到端跑通整条地基)。 - 真实明星路数据 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)+ 峰值内存(PsapiPeakWorkingSetSize)。 含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 工厂。
- Windows
- 顶层
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 决策
- 真实数据 BLOCKER(高):
readIprb道数契约与真实数据不符。建议放宽为 「道数 = 文件字节 / (samples·2)」(容忍 ±N 道),或确认 LAST TRACE 语义后去 +1, 并同步改单测。落地后重跑两条命令即可补齐 §4 真实指标。 - 深度尺度(中):SOIL VELOCITY=100 m/s(头单位 m/µs ×1e6)→ 深度跨度微米级, cellZ=0.05 会把 Z 压成 1 层。影响真实体维度与 9c 渲染基准,需确认单位约定。
- 顶层 CMakeLists 当前 working tree 已有他会话的修改(视觉设计/chart 等);本会话只新增 add_subdirectory 一行,暂存时务必只 stage 该文件并核对 diff,勿带入其他未暂存改动。