HIP: record direct atomic PSF timings
This commit is contained in:
1 parent
7a80086f63
commit
a18ebfbf1a
9 files changed
+279
-10
No files matched your search
@@ -0,0 +1,139 @@
|
||||
# HIP direct-atomic 高密度 PSF endpoint(2026-09-05)
|
||||
|
||||
## 目的和边界
|
||||
|
||||
测量 production HIP `PsfEventSink` 在一个高表面密度 2MASS tile 上的端到端表现,并将 GPU
|
||||
传输、kernel 与 HDR 下载分开记录。此记录验证 direct-global-atomic 的实际成本边界;它不是
|
||||
tile-local reduction 的性能声明,也不把 kernel 时间直接归因为 atomic contention。
|
||||
|
||||
## 控制条件
|
||||
|
||||
- Source baseline: `7a80086f63e8b1e5f27d9524ba0455f2d6e49be5`
|
||||
(`Feat: add initial HIP PSF backend`);HIP timing counters 是该基线之上的未提交诊断改动,
|
||||
不改变 event、HDR 或输出路径。
|
||||
- Host: i7-12700K;`OMP_NUM_THREADS=16`。
|
||||
- GPU: AMD Radeon RX 9070 (`gfx1201`), 56 CUs, 15.9 GiB global memory;HIP runtime 是主机
|
||||
实际 probe 所报告的设备。
|
||||
- Build: Release;C11/`-march=native -O2 -pipe`、OpenMP、PNG;HIP 后端由
|
||||
`PSF_BACKEND=hip` 选择。
|
||||
- Input: `assets/2mass/processed/all_sky/tile_ra252_dec048.csv`,54,160 stars。
|
||||
- Camera: Minkowski;RA 252.5 deg、Dec -41.5 deg、FOV 0.6 deg、1920 x 1920 px、
|
||||
`--coarse-cell-pixels 240`(128 triangles / 81 initial rays)。
|
||||
- PSF: FWHM 2.7 px、Moffat beta 3、exposure `1e15`、
|
||||
`--max-cache-psf-flux 1e300`。cache radius 266 px;本次没有 min-Y discard 或 direct fallback。
|
||||
|
||||
这里刻意以较大的 coarse cell 减少 triangle 枚举工作,使固定 catalog 与相同镜头映射下的
|
||||
splat 阶段成为可比较对象;它不是全天空或生产 4K 吞吐量估计。
|
||||
|
||||
## 命令与原始输出
|
||||
|
||||
CPU reference(同一输入与参数;在 HIP 命令确认退出后顺序运行):
|
||||
|
||||
```console
|
||||
export OMP_NUM_THREADS=16
|
||||
time build/Release/minkowski_sky \
|
||||
--catalog assets/2mass/processed/all_sky/tile_ra252_dec048.csv \
|
||||
--look-ra-deg 252.5 --look-dec-deg -41.5 --fov-deg 0.6 \
|
||||
--width 1920 --height 1920 --coarse-cell-pixels 240 \
|
||||
--exposure 1e15 --psf-fwhm-pixels 2.7 --psf-moffat-beta 3 \
|
||||
--max-cache-psf-flux 1e300 --output /tmp/cpu_psf_dense.png --verbose
|
||||
PSF cache ready: 64x64 phases, radius 266 px, relative tail 1e-08, tail abs 1e-06, boundary 1e-07, build 20.738 s
|
||||
Frame 0: tracing 81 initial rays from 128 mesh triangles...
|
||||
Frame 0: initial ray trace finished in 0.009 s.
|
||||
Frame 0: traced 81 lens vertices; starting catalog render.
|
||||
Frame 0: finding and prefetching catalog tiles...
|
||||
Frame 0: catalog prefetch finished (0 candidate tiles).
|
||||
Frame 0: splatting 128 lens triangles...
|
||||
Frame 0: splat worker 14/16 started.
|
||||
Frame 0: splat worker 10/16 started.
|
||||
Frame 0: splat worker 16/16 started.
|
||||
Frame 0: splat worker 1/16 started.
|
||||
Frame 0: splat worker 12/16 started.
|
||||
Frame 0: splat worker 13/16 started.
|
||||
Frame 0: splat worker 5/16 started.
|
||||
Frame 0: splat worker 11/16 started.
|
||||
Frame 0: splat worker 7/16 started.
|
||||
Frame 0: splat worker 6/16 started.
|
||||
Frame 0: splat worker 3/16 started.
|
||||
Frame 0: splat worker 4/16 started.
|
||||
Frame 0: splat worker 2/16 started.
|
||||
Frame 0: splat worker 9/16 started.
|
||||
Frame 0: splat worker 8/16 started.
|
||||
Frame 0: splat worker 15/16 started.
|
||||
Frame 0: splat worker 14/16 reached 8 local triangles.
|
||||
Frame 0: splat worker 2/16 reached 8 local triangles.
|
||||
Frame 0: splat worker 10/16 reached 8 local triangles.
|
||||
Frame 0: splat worker 7/16 reached 8 local triangles.
|
||||
Frame 0: splat worker 1/16 reached 8 local triangles.
|
||||
Frame 0: splat worker 11/16 reached 8 local triangles.
|
||||
Frame 0: splat worker 3/16 reached 8 local triangles.
|
||||
Frame 0: splat worker 5/16 reached 8 local triangles.
|
||||
Frame 0: splat worker 4/16 reached 8 local triangles.
|
||||
Frame 0: splat worker 12/16 reached 8 local triangles.
|
||||
Frame 0: splat worker 16/16 reached 8 local triangles.
|
||||
Frame 0: splat worker 13/16 reached 8 local triangles.
|
||||
Frame 0: splat worker 9/16 finished after 4 local triangles.
|
||||
Frame 0: splat worker 6/16 finished after 5 local triangles.
|
||||
Frame 0: splat worker 15/16 finished after 5 local triangles.
|
||||
Frame 0: splat worker 8/16 finished after 5 local triangles.
|
||||
Frame 0: splat worker 11/16 finished after 9 local triangles.
|
||||
Frame 0: splat worker 1/16 finished after 9 local triangles.
|
||||
Frame 0: splat worker 5/16 finished after 9 local triangles.
|
||||
Frame 0: splat worker 7/16 finished after 9 local triangles.
|
||||
Frame 0: splat worker 10/16 finished after 9 local triangles.
|
||||
Frame 0: splat worker 16/16 finished after 8 local triangles.
|
||||
Frame 0: splat worker 13/16 finished after 8 local triangles.
|
||||
Frame 0: splat worker 4/16 finished after 8 local triangles.
|
||||
Frame 0: splat worker 3/16 finished after 9 local triangles.
|
||||
Frame 0: splat worker 12/16 finished after 8 local triangles.
|
||||
Frame 0: splat worker 2/16 finished after 10 local triangles.
|
||||
Frame 0: splat worker 14/16 finished after 13 local triangles.
|
||||
Frame 0: catalog splatting finished in 7.1 s; writing image...
|
||||
Rendered 26172 images from 54160 catalog stars to /tmp/cpu_psf_dense.png (ok)
|
||||
PSF splats: cached 26172, cached wing-clipped 0, direct fallbacks 0, discarded below min-Y 0
|
||||
build/Release/minkowski_sky --catalog --look-ra-deg 252.5 --look-dec-deg 418.79s user 3.19s system 1472% cpu 28.654 total
|
||||
```
|
||||
|
||||
HIP measurement(加入 timing counters 后;其余参数相同):
|
||||
|
||||
```console
|
||||
make -B PSF_BACKEND=hip SPACETIME=minkowski backend
|
||||
export OMP_NUM_THREADS=16
|
||||
time build/Release/minkowski_sky_hip \
|
||||
--catalog assets/2mass/processed/all_sky/tile_ra252_dec048.csv \
|
||||
--look-ra-deg 252.5 --look-dec-deg -41.5 --fov-deg 0.6 \
|
||||
--width 1920 --height 1920 --coarse-cell-pixels 240 \
|
||||
--exposure 1e15 --psf-fwhm-pixels 2.7 --psf-moffat-beta 3 \
|
||||
--max-cache-psf-flux 1e300 --output /tmp/hip_psf_dense_timing.png --verbose
|
||||
PSF cache ready: 64x64 phases, radius 266 px, relative tail 1e-08, tail abs 1e-06, boundary 1e-07, build 20.915 s
|
||||
Frame 0: tracing 81 initial rays from 128 mesh triangles...
|
||||
Frame 0: initial ray trace finished in 0.008 s.
|
||||
Frame 0: traced 81 lens vertices; starting catalog render.
|
||||
Frame 0: finding and prefetching catalog tiles...
|
||||
Frame 0: catalog prefetch finished (0 candidate tiles).
|
||||
Frame 0: splatting 128 lens triangles...
|
||||
Frame 0: catalog splatting finished in 3.2 s; writing image...
|
||||
Rendered 26172 images from 54160 catalog stars to /tmp/hip_psf_dense_timing.png (ok)
|
||||
PSF splats: cached 26172, cached wing-clipped 0, direct fallbacks 0, discarded below min-Y 0
|
||||
HIP PSF: 26172 events in 2 batches (2 timed); upload 0.000073 s, kernel 2.950377 s, download 0.011256 s
|
||||
build/Release/minkowski_sky_hip --catalog --look-ra-deg 252.5 --look-dec-deg 326.85s user 1.53s system 1314% cpu 24.985 total
|
||||
```
|
||||
|
||||
两次命令都没有设置 `TIMEFMT`;末行是 zsh 默认 `%J %U user %S system %P cpu %*E total`
|
||||
格式的原始输出。它们按顺序运行:先确认没有 renderer benchmark,再执行 HIP,确认其退出后才
|
||||
执行 CPU,期间没有第二个 renderer benchmark。
|
||||
|
||||
`cmp` 比较 `/tmp/cpu_psf_dense.png` 与 `/tmp/hip_psf_dense_timing.png`:`PNG byte comparison:
|
||||
identical`。
|
||||
|
||||
## 结果和决策
|
||||
|
||||
CPU catalog splatting 为 7.1 s,HIP 为 3.2 s(约 2.22x);完整进程的 zsh elapsed time 为
|
||||
28.654 s(CPU)与 24.985 s(HIP)。在 HIP 的 3.2 s 中,两个 batch 的 kernel event 合计
|
||||
2.950377 s;上传为 0.000073 s、最终 HDR 下载为 0.011256 s。因此这个 endpoint 的 GPU 端
|
||||
时间由 kernel 主导,而不是 PCIe。
|
||||
|
||||
但 kernel 还包括每个 event 的圆形 PSF 支持域遍历、cache 权重读取和 HDR atomic 写入。这里只有
|
||||
一个密度/支持域组合,也没有关闭或替代 atomic 的对照,所以不能以此声称 global atomics 的热点
|
||||
竞争是主导瓶颈。结论是保留 direct atomic,并先测密度与支持域扫描;暂不引入 tile-local reduction
|
||||
或其分桶/重排复杂度。
|
||||
Reference in new issue
Block a user