Bench: record PSF event sink overhead
This commit is contained in:
1 parent
2a03cbf724
commit
92d8d294b5
1 file changed
+90
@@ -0,0 +1,90 @@
|
|||||||
|
# 2MASS 全天 1080p CPU PSF event-sink 变更前后记录(2026-09-05)
|
||||||
|
|
||||||
|
## 目的
|
||||||
|
|
||||||
|
记录引入 CPU `PsfEventSink` 前后的完整渲染耗时。cache-eligible 星像在改动后由每个
|
||||||
|
OpenMP render worker 的固定大小块暂存、批量消费;cache/direct/min-Y 判定、HDR 值和
|
||||||
|
输出语义不改变。本记录不是 GPU 基准;它以完全没有 event 路径的上一版本为基线,衡量
|
||||||
|
event-sink 实现进入生产路径的端到端增量。
|
||||||
|
|
||||||
|
## 控制条件
|
||||||
|
|
||||||
|
- Host: i7-12700K,16 个 online logical CPUs;未显式设置 `OMP_NUM_THREADS`。
|
||||||
|
- Build: Release, C11, `-march=native -O2 -pipe`, OpenMP, PNG;Minkowski。
|
||||||
|
- Input: `assets/2mass/processed/all_sky`;9,328 tiles / 18,148,775 stars。
|
||||||
|
- Camera: RA 0 deg, Dec -90 deg; 1920 x 1080 px; horizontal FOV 60 deg;
|
||||||
|
coarse cell 16 px; exposure `1e12`。
|
||||||
|
- PSF: default FWHM 2.7 px, beta 4.5, relative tail `1e-8`, min-Y disabled,
|
||||||
|
cache/direct threshold 1. 两次均无 direct fallback。
|
||||||
|
- 两次均产生 16,554,566 个星像;catalog prefetch 统计一致。
|
||||||
|
|
||||||
|
两次运行的完整命令与原始输出如下;保留这些输出以便后续性能变化可结合 cache build、
|
||||||
|
catalog prefetch、星像数、fallback 统计与实际 CPU 利用率判断,而非只比较汇总数字。
|
||||||
|
|
||||||
|
### stash 后基线(`4953775`)
|
||||||
|
|
||||||
|
```console
|
||||||
|
time ./build/Release/minkowski_sky \
|
||||||
|
--all-sky-catalog assets/2mass/processed/all_sky \
|
||||||
|
--look-ra-deg 0 --look-dec-deg -90 \
|
||||||
|
--width 1920 --height 1080 \
|
||||||
|
--coarse-cell-pixels 16 --fov-deg 60 \
|
||||||
|
--exposure 1e12 \
|
||||||
|
--output output/imgs/2mass_1080p_60deg_south_pole_1e12_psf_cache_event.png
|
||||||
|
PSF cache ready: 64x64 phases, radius 47 px, relative tail 1e-08, tail abs 1e-06, boundary 1e-07, build 0.681 s
|
||||||
|
Catalog prefetch: 9328 requested, 9328 newly loaded (18148775 stars), 0 unavailable in 3.942 s; 4 loader workers
|
||||||
|
Rendered 16554566 images from 18148775 catalog stars to output/imgs/2mass_1080p_60deg_south_pole_1e12_psf_cache_event.png (ok)
|
||||||
|
PSF splats: cached 16554566, cached wing-clipped 0, direct fallbacks 0, discarded below min-Y 0
|
||||||
|
./build/Release/minkowski_sky --all-sky-catalog assets/2mass/processed/all_sk 703.03s user 5.78s system 1424% cpu 49.753 total
|
||||||
|
```
|
||||||
|
|
||||||
|
### stash pop 恢复后的 event-sink 改动(后来提交为 `2a03cbf`)
|
||||||
|
|
||||||
|
```console
|
||||||
|
time ./build/Release/minkowski_sky \
|
||||||
|
--all-sky-catalog assets/2mass/processed/all_sky \
|
||||||
|
--look-ra-deg 0 --look-dec-deg -90 \
|
||||||
|
--width 1920 --height 1080 \
|
||||||
|
--coarse-cell-pixels 16 --fov-deg 60 \
|
||||||
|
--exposure 1e12 \
|
||||||
|
--output output/imgs/2mass_1080p_60deg_south_pole_1e12_psf_cache_event.png
|
||||||
|
PSF cache ready: 64x64 phases, radius 47 px, relative tail 1e-08, tail abs 1e-06, boundary 1e-07, build 0.672 s
|
||||||
|
Catalog prefetch: 9328 requested, 9328 newly loaded (18148775 stars), 0 unavailable in 3.926 s; 4 loader workers
|
||||||
|
Rendered 16554566 images from 18148775 catalog stars to output/imgs/2mass_1080p_60deg_south_pole_1e12_psf_cache_event.png (ok)
|
||||||
|
PSF splats: cached 16554566, cached wing-clipped 0, direct fallbacks 0, discarded below min-Y 0
|
||||||
|
./build/Release/minkowski_sky --all-sky-catalog assets/2mass/processed/all_sk 710.02s user 5.90s system 1419% cpu 50.424 total
|
||||||
|
```
|
||||||
|
|
||||||
|
状态的切换由 Git 完成:先在包含 event-sink 改动的工作树中运行,随后 `git stash`
|
||||||
|
暂存该改动、重新编译并运行基线,最后 `git stash pop` 恢复。因而这项测量比较的是
|
||||||
|
`4953775` 与后来提交为 `2a03cbf` 的完整源码差异。前者没有 event 路径;后者的差异
|
||||||
|
正是 event 准备/消费边界、每 worker 缓冲及其生命周期。因此这不是“开关的微基准”,而是
|
||||||
|
event 实现的端到端前后比较。
|
||||||
|
|
||||||
|
结果表中的 cache build 与 prefetch 是程序输出;两次均在对应状态下重新编译后运行。
|
||||||
|
|
||||||
|
## 结果
|
||||||
|
|
||||||
|
| state | revision | cache build | prefetch | user | system | wall | CPU | user/image |
|
||||||
|
|---|---|---:|---:|---:|---:|---:|---:|---:|
|
||||||
|
| stash 后的基线 | `4953775` | 0.681 s | 3.942 s | 703.03 s | 5.78 s | 49.753 s | 1424% | 42.47 us |
|
||||||
|
| stash pop 恢复后的 event-sink 改动 | 后来提交为 `2a03cbf` | 0.672 s | 3.926 s | 710.02 s | 5.90 s | 50.424 s | 1419% | 42.89 us |
|
||||||
|
|
||||||
|
恢复改动后的观测差为 +6.99 user s、+0.671 wall s、+0.42 us/star image,即
|
||||||
|
**+0.99% user CPU work**。两次的平均并行度近似相同(`user / wall`:14.13 与
|
||||||
|
14.08),所以 wall-time 差异并非由明显不同的实际 worker 使用量造成。
|
||||||
|
|
||||||
|
因此在这套真实渲染配置上,event-sink 实现的测得开销为约 0.99% user CPU work。该数值与
|
||||||
|
固定容量 event 拷贝、额外分支及最终 flush 所预期的小幅 CPU 开销相容。每个状态目前仅有
|
||||||
|
一次运行;若要估计波动范围,应在两个 Git 状态下各重复运行多次,而不是把基线改造成一个
|
||||||
|
原先不存在的运行时路径。
|
||||||
|
|
||||||
|
## Historical comparison boundary
|
||||||
|
|
||||||
|
`benchmarks/2mass_all_sky_psf_lookup_2026-08-28.md` recorded 645.24 user s /
|
||||||
|
74.48 wall s for lookup, but its analytic render path was restricted to at most
|
||||||
|
10 private-HDR workers. The current runs use about 14 active workers on
|
||||||
|
average. Therefore the current 49.753--50.424 s wall time is not evidence of
|
||||||
|
an event-sink speedup, and the older 645.24 user s cannot be attributed to the
|
||||||
|
event sink. 相反,本页的 `4953775..2a03cbf` 前后比较正是 event-sink 实现的性能
|
||||||
|
增量记录;它与旧基准的不同仅在于旧基准还混入了已移除的 worker 限制。
|
||||||
Reference in new issue
Block a user