Feat: add initial HIP PSF backend

This commit is contained in:
wyj committed 2026-09-05 04:23:57 -04:00
1 parent e48c490337
commit 7a80086f63
10 files changed
+512 -30

No files matched your search

+16 -10
View File
@@ -138,8 +138,8 @@ GPU 后端必须先在小、固定 catalog snapshot 上同 CPU 的 `--psf-direct
2. 记录每通道绝对/相对误差、最大像素误差、总 RGB/Y 通量差和事件统计。
3. 单星(不同 phase、亮/暗、边缘和大 support)、稀疏场、密集重叠场各有测试。
4. 验证 `--psf-relative-tail`、`--psf-min-y`、cache/direct fallback 的统计及图像语义一致。
5. GPU 不可用、feature 不足、初始化失败或运行错误时,明确报告并回退 CPU;不得默默输出
部分帧。
5. 当用户显式选择 GPU 后端时,GPU 不可用、feature 不足、初始化失败或运行错误必须明确报错
并终止该次渲染;不得回退 CPU 或默默输出部分帧。未选择 GPU 时,CPU 路径仍是独立基线。
6. 以端到端 wall time 为准,同时记录 CPU 线程数、GPU、driver/runtime、块大小、分辨率、
catalog snapshot、Git hash 和参数。
@@ -160,15 +160,21 @@ GPU 后端必须先在小、固定 catalog snapshot 上同 CPU 的 `--psf-direct
可执行;它没有 cache 权重、双精度 HDR 或 production integration。其 `test-hip` target 和测试
已移除,不能作为 renderer GPU backend 的验证或运行入口。
下一步是仅将现有 `PsfCachedEvent` 块与 `PsfKernelCache::weights` 接入 HIP:
HIP direct-atomic 的当前实现状态:
1. 定义 production HIP sink 的 C ABI,上传 double event 与 immutable cache 权重,并复用
device event/HDR buffer。
2. 保持 CPU 对 direct fallback 的处理和提交顺序;每个 cache 事件仅在 HIP 端按现有 bilinear
phase cache、圆形支持和 wing clip 规则累积到 double HDR。
3. 用固定 catalog reference 比较 HDR RGB/Y、最大像素误差、总通量与统计;GPU atomic 的
非确定加法顺序使用事先记录的容差,而非 bytewise 比较。
4. 记录端到端基准的完整命令和原始输出:Git hash、CPU threads、GPU/runtime、块大小、上传、
1. 已定义 production HIP sink 的 C ABI,上传 double event 与 immutable cache 权重,并复用
device/HDR buffer。正式构建选项为 `PSF_BACKEND=cpu|hip`;HIP 选择会把该层链接到 renderer,
而 CPU 选择不要求 HIP 工具链或 runtime。
在 RX 9070(gfx1201)上,`make -B PSF_BACKEND=hip SPACETIME=minkowski hip-psf-test`
的三事件重叠 cache 对照给出 `max_abs=3.4694469519536142e-18`、
`max_rel=2.7555746842446215e-16`。
2. 已接入 `frame` 的流式 sink。`PSF_BACKEND=hip` 使用单一 GPU double HDR framebuffer;
cache 事件按 16,384 项块提交,仍使用既有 bilinear phase cache、圆形支持和 wing clip 规则。
direct fallback 会完成前序 GPU 工作、在 CPU 计算、再上传 HDR 后继续,因而保持提交顺序。
3. RX 9070 上的 640×360 固定 Minkowski catalog HDR 对照逐样本一致;含 2 个 cache 事件与
1 个 direct fallback 的 `tests/data/hip_psf_mixed_catalog.csv` 场同样逐样本一致。GPU failure
会打印阶段与 HIP 错误并令该帧返回失败,不会切换到 CPU backend。
4. 待记录端到端基准的完整命令和原始输出:Git hash、CPU threads、GPU/runtime、块大小、上传、
kernel、download、分辨率、catalog、PSF 及所有 fallback 统计。
5. 只在 direct atomic profile 显示热点竞争是主要瓶颈时,比较 tile-local reduction;ATRI 的
整帧收集/重排同样必须以端到端收益证明。