Doc: record bounded HIP PSF replay results and provenance

Archive fixed catalog subsets and captured events, manifests, reproducible commands, raw timing and regression logs, and device resource evidence. Document distribution-dependent tile reduction gains and independent indexed producer throughput.

Update the GPU plan and renderer design while retaining the production atomic path. Preserve historical measurement metadata and exclude generated Python bytecode.
This commit is contained in:
wyj committed 2026-09-11 16:45:48 -04:00
1 parent 7f5ec1a488
commit 11e703e33d
298 files changed
+212095

No files matched your search

+95
View File
@@ -15,6 +15,101 @@ float HDR 或黑体近似。下面第 7 节的 2026-09-05 状态是历史基线
和前 64 批计时限制已被此次实现取代。实际 `PsfCachedEvent` 为 56 B,16,384 项为
896 KiB;早期按 24–32 B 估算的整帧内存不是当前结构的实际成本。
## 后续实施结果(2026-09-07)
已实施有界真实事件捕获、CPU/当前 HIP/16×16/32×32 回放、按像素归约原型与
独立 producer 诊断;原型包含 phase/行边界复用,以及稀疏 tile 直接写回、密集列表
部分和合并。固定输入、manifest、完整原始日志与结论见
[HIP 回放实验](benchmarks/hip_psf_replay_2026-09-07.md)。
production HIP 尚未替换为 tile 算法;收益与事件分布有关,不能由局部回放推算
全天加速比。未运行完整全天 catalog。测试工具与原型已于 2026-09-11 提交为
`7f5ec1a`;以下保留原执行计划作为验收依据。
## 下一步执行计划(2026-09-07,原计划;有界实验已实施)
### 依据与目标
当前实现基线为 `e1ec480669b0d24a0266ee135edf8a64a0d80ec9`。用户完成的
[全天 CPU/HIP 记录](benchmarks/2mass_galactic_center_cpu_hip_2026-09-07.md)
中,HIP 总耗时 533.06 s,splat 阶段 481.2 s,其中 kernel 476.906037 s、
event upload 1.504570 s。下一步优先降低 GPU PSF 累积成本,暂不优先优化
geodesic、增加 CPU workers 或改造传输流水线。
用户随后提供的同一 lens map 导入 CPU 运行总耗时 1402.02 s,splat 阶段
1350.3 s;与 HIP 对应的时间比分别为约 2.63 和 2.81。这组后续数据来自本次
会话,尚未在上述 benchmark 中归档完整原始日志。单星重新生成几何的 67.35 s
包含固定开销,也支持几何不是当前主要成本;它不是独立的纯 tracing 计时。
kernel 占比高不能单独证明 atomic contention 主导。以下分桶原型用于检验这个
假设,不预先承诺加速倍数,也不直接替换 production 路径。
### 1. 建立有界真实事件回放
- 从小型 catalog 子集和已有 lens map 的选定 triangles 捕获正常准备后的
`PsfCachedEvent`,覆盖普通区域、银心密集区域和强透镜区域。保留位置、颜色、
flux、support、事件顺序及相匹配的 PSF cache 参数;不收集完整六亿事件。
- 捕获器必须限制输入子集、triangle 范围和输出事件数,不能只限制输出文件大小、
却仍遍历整个全天 catalog。记录输入与事件文件 hash、选择规则和实际覆盖分布。
- 首轮按 4,096、16,384、65,536 events 递增;单次回放上限 45 s,小型 renderer
上限 60 s。超时后先分析,不自动扩大规模。空间分散的合成对照单独标记,保持
事件数、flux 和 support 分布可比,避免把屏幕裁切减少的工作量当作收益。
- 对同一回放比较 CPU double reference、当前 32-thread/event kernel 与候选算法。
除 events/s 外,统计实际 event–pixel 贡献数和贡献吞吐量;拆分上传、分桶、
累积、合并、下载时间,并测量整个回放 wall time 与内存峰值。
交付物:有界捕获/回放工具、固定输入与 manifest、完整命令及原始日志。
先获得可重复的当前基线,再进入候选算法对照。
### 2. 原型验证按像素归约
- 分别试验 16×16 和 32×32 screen tiles。根据事件完整 support 构建每个 tile
的事件列表;一个事件可引用到多个 tile,不能只按中心归属,否则会丢失 PSF wings。
- 让线程拥有输出像素,在寄存器中用 double 累积 RGB,再写回 HDR。继续使用现有
四点 phase cache 插值、圆形 support 和裁切判定。目标是消除每个贡献的全局
double atomic,而不是改用低精度或减少物理贡献。
- 密集 tile 的长列表可拆成独立的部分和,再用第二阶段归约,避免一个热点 tile
限制并行度。明确部分和的 ownership、写回顺序和 scratch 生命周期。
- 保持有界 chunk;限制 tile 引用列表及部分和内存,检查索引溢出并明确超限处理。
不依赖整帧事件常驻内存。分桶、空像素遍历、合并和 buffer 清理都计入成本。
- 原型与现有 kernel 并存。若减少 atomics 后仍无收益,结合回放和设备分析检查
cache 权重读取、FP64 算术、寄存器压力与负载分布;不把失败解释为必须降低精度。
进入生产集成的条件:正确性通过,且包含分桶/合并的完整回放在代表性样本上有
可重复收益。只有 kernel 单项变快而整体变慢时,不替换当前实现。第 4、7 节原有的
tile-local 门槛在此区分为“允许有界实验检验假设”和“有收益证据才保留生产实现”。
### 3. 测量 CPU producer 独立吞吐
提供诊断 sink:保留正常 catalog 查询、inverse mapping、频移、黑体颜色、
cache/direct/min-Y 判定和事件准备,仅将累积消费替换为计数与校验摘要。
明确标记诊断输出,不能把未累积的 HDR 当作正常渲染结果。
先在同一有界输入运行该模式,测量 producer wall time,必要时细分查询、映射与颜色
计算。不要用提高 min-Y 的方式替代它:那会提前改变执行路径。现有 summed worker
generation 的 `3302.459 / 16 ≈ 206 s` 仅是粗略线索,受等待和调度影响,不能作为
独立 CPU 下限。GPU 加速后若 producer 成为限制,再据测量选择优化对象;黑体近似
或查表不在本轮默认范围内。
### 4. 正确性、集成与测试纪律
- 保持 double HDR、亚像素 phase、support、wing clip、min-Y 与 direct fallback
语义;包含跨 tile、屏幕边缘、不同 phase、大 support、热点、多 chunk、buffer
复用和混合 direct fallback 的用例。fallback 前须完成待处理 GPU 工作,保持
下载、CPU 累积、上传的完整顺序。
- 验证 finite 值、事件及分类计数、double linear HDR 的绝对/相对误差和总 RGB/Y
通量差;近零值不单用相对误差。沿用现有测试门槛作为起点,若需调整必须解释
数值原因并记录误差证据,不为通过测试任意放宽。
- 归约顺序会变化,不能承诺 PNG 比特级一致。PNG 比较是补充,不能代替 double
HDR 检验。先通过 PSF 单元回放,再做小型 Minkowski、Schwarzschild 集成回归。
- 所有测试进程严格串行;启动前确认没有前一测试仍在运行,超时后确认退出再继续。
不同时运行 CPU/HIP 对照,也不让 profiler 与另一测试竞争设备。
- 本计划不授权重跑完整全天渲染。先完成有界验证和性能证据,再决定是否需要完整
验证;没有完整运行就不宣称整帧加速比。保存 Git/binary hash、构建命令、设备与
runtime、线程、输入/cache、所有阶段计时和原始终端输出。
- 实施后同步设计文档第 22.3 节及 benchmark。原计划写入时尚未实现或执行测试;当前进展见上方实施结果,
后续提交仍须由用户明确授权。
## 1. 目的与边界
本文件规划的是**最终点源 PSF 到 HDR framebuffer 的累积**加速,而不是 GPU