Doc: Record full-day parallel prebinning results and next steps

Document the producer-private adaptive path, the dummy support workload
diagnostics, the negative result of the old serial binning and the
2026-09-13 full-day comparison (splat 282.944 s vs atomic 481.417 s).
Add the corresponding raw logs, hotspot fixtures and runner evidence,
and lay out the staged plan toward a sub-240 s full-day render without
changing the default atomic path.
This commit is contained in:
wyj committed 2026-09-14 19:16:00 -04:00
1 parent a88ec56097
commit 7ddc58515a
47 files changed
+133949

No files matched your search

+267
View File
@@ -2,6 +2,10 @@
## 结论与交付
**当前方向(2026-09-13):搁置旧串行 adaptive 的慢因追溯,在新版 worker 私有预分桶
adaptive 上优化生产管线。以下各日期记录保留历史结论;当前结果和下一步目标以
“2026-09-13 全天复测与下一步目标”一节为准。**
已实施原计划的有界捕获/回放、16×16 和 32×32 按像素归约原型、独立 CPU producer
诊断及正确性回归。**原型保留在测试程序中,未替换生产 HIP 路径。**
实现于 2026-09-11 提交为 `7f5ec1a`;以下日志和 hash 保留 2026-09-07 测量时的状态。
@@ -61,6 +65,196 @@ OpenMP producer 与 sink 锁竞争,也没有授权用本回放结果宣称完
process wall 和 exit status。所有性能进程均由现有独占 runner 串行执行,未与其他 renderer
或 profiler 并发。
## 2026-09-12 持续回放与 production 集成
在提交 `2d01c2c101ccea8193a64bb46ceafca3009f0ef5` 之上的未提交实现中,回放器增加了
1--512 轮有界重复模式,用同一真实事件流测试持续负载。重复模式不把累计 128/256 轮的
GPU HDR 与单轮 CPU reference 比较,因而输出明确标记 `validation=skipped-for-sustained-timing`;
单轮真实输入与 mixed boundary 仍执行原有 double HDR、RGB/Y 通量和 finite 检查。
原 replay tile16 在密集输入的 256 轮完整 wall 为 12.968 s,atomic 为 14.326 s,只有
1.10×--1.18× 的持续收益;tile accumulation 本身仍约快 1.4×,CPU 的整屏嵌套列表分桶
约占 1.8--1.9 s。不同运行顺序下的 128 轮 adaptive 为 6.372--6.880 s,对应 atomic
7.149--7.165 s,证明短回放的 1.40× 完整收益不能直接外推。
production sink 随后接入稀疏 touched-tile 分桶和可复用有界 scratch。默认保持 atomic;
`HIP_PSF_ACCUMULATION=adaptive` 启用与 replay 相同的中心密度选择规则。32 MiB references、
2 MiB tasks 或 128 MiB partials 超限时按 chunk 回退 atomic,不改变 double RGB、四点 phase
cache、圆形 support、wing clipping 或 direct fallback 顺序。
最终同 binary(SHA-256
`c560c193e1dc2104030ed804ea68e16ab7576592191dbf147b917a6e097a66b6`)连续回放
65,536 个真实银心事件 128 轮:
| production sink | 完整 replay wall | GPU 阶段 | selector | CPU bin | upload | batches |
| --- | ---: | ---: | ---: | ---: | ---: | ---: |
| atomic | 7.164 s | 7.132 s | 0 | 0 | 0.023 s | 512 atomic |
| adaptive | 4.631 s | 3.875 s | 0.018 s | 0.607 s | 0.091 s | 512 tile16 |
完整 replay 为 **1.55×**,记录的 GPU 阶段为 **1.84×**。同 binary 的 64 轮同贡献分散
输入中,adaptive 选择 256/256 atomic chunks,完整 wall 为 3.167 s,直接 atomic 为
3.169 s,差异在 0.1% 内。最终 dense 单轮检查的
`max_abs=2.71051e-19`、`max_rel=1.96115e-14`。最终 mixed boundary
覆盖 2 个 tile16、1 个 atomic chunk 和中途 direct fallback,最坏 `max_abs=5.96856e-11`、
`max_rel=5.95958e-13`,RGB/Y 通量阈值均通过。production primitive 在 adaptive 环境下也
通过,`max_abs=2.84217e-14`、`max_rel=7.53192e-16`。
三 tile、21,087-star renderer 配对使用同一 4K lens map 和同一 production binary
(SHA-256 `f51cbccac135502440f005c5d61d95d6004be7d4ec5cd09bfe04bab53053143d`)。
atomic/adaptive 均产生 156,837 events;adaptive 选择 14 tile16 + 2 atomic batches,kernel
为 0.118894 s,对照 0.169212 s,splat wall 为 0.236/0.285 s。两张 PNG 的 SHA-256 都是
`99a971fac7f5e66f0a1aafd0921b61f16fcb933c9488320f95e423542d3b6a6d`。约 1.4 s 的完整
进程受 cache build 等固定成本波动支配,不能用 process wall 判断这项优化。
随后使用同一 4K lens map、598,264,924 events 和 36,530 batches 运行了完整全天
adaptive 渲染。它推翻了上述有界样本的外推:
| 完整全天 | splat wall | kernel | CPU bin | selector | upload | process wall |
| --- | ---: | ---: | ---: | ---: | ---: | ---: |
| atomic | 480.500 s | 477.302449 s | 0 | 0 | 1.411367 s | 533.62 s |
| adaptive | 586.763 s | 416.265471 s | 155.302 s | 2.212 s | 7.506981 s | 640.35 s |
adaptive 的 GPU kernel 只减少 61.037 s(12.79%),而串行关键路径上的 CPU 分桶增加
155.302 s,splat wall 因而增加 106.263 s(22.12%),完整进程增加 106.73 s(20.00%)。
36,515/36,530 batches 被选为 tile16,说明中心 32px tile 密度无法预测完整 47px PSF
support 扩张后的 references、tasks、列表长度和分桶成本。atomic 从有界回放的
13.93 ms/batch 到全天的 13.07 ms/batch 没有恶化;tile kernel 则从有界样本的
7.57 ms/batch 变为全天的 11.40 ms/batch,CPU 分桶另需 4.25 ms/batch。串行分桶是已确认的额外成本;GPU 阶段变慢的具体原因未定位,
不能仅凭这些时间排除时钟或其他系统因素。
正确性仍成立:atomic/adaptive PNG 的 SHA-256 都是
`c63df730c7f927fc6b6ae17df5ffbad1d2bb44631a5821557150d00d6269a3e4`。两个 HDR FITS
共有 24,883,200 个 float,113 个因累积顺序不同;`max_abs=2.38418579e-07`、
`max_rel=1.18905923e-07`。这项旧串行分桶 adaptive 实现是历史负结果,不能外推为新版并行预分桶的结论;
默认继续保持 atomic。当时提出的下一轮实验是直接度量 support-expanded 引用工作量,并在
重新跑完整全天前用真实流式 producer 验证并行预分桶或 GPU 分桶能否把成本移出串行关键路径。
完整 adaptive 原始输出保存在 `full_production_adaptive_user.log`(SHA-256
`ec7b41d56a76cb93383737c30c6c6055bdb53b9b0cff54034333d96a841b1f36`);该用户命令未嵌入
Git/binary hash,运行后工作区 binary 的 SHA-256 为
`f51cbccac135502440f005c5d61d95d6004be7d4ec5cd09bfe04bab53053143d`,不可仅凭事后 hash
证明执行期间 binary。atomic 数字来自同一任务先前保留的终端输出。
### 2026-09-12 producer 私有并行预分桶原型
在上述完整全天负结果之后,将 adaptive 选择与 support-expanded CPU 分桶移到每个 OpenMP
producer 私有的 `HipPsfPreparedChunk`,在获取 sink 共享锁前完成;单个 sink 仍独占 GPU
HDR、stream、device scratch 和稳定的上传 staging。direct fallback 先准备本 worker 的待提交
chunk,再在同一锁内完成提交、HDR 下载、CPU splat、HDR 上传。原 `hip_psf_sink_submit` 仍用于
单线程回放兼容,正常生产默认 atomic 未变。新日志记录 tile references、tasks、merges 和
单 chunk 峰值,以便下一次评估完整 support 工作量。
同一 65,536-event 银心固定输入重复 128 轮,均为 512 个 tile16 batches。新 binary 的配对
回放结果如下(两者均通过 `128 × CPU double reference`,`max_rel=2.14616e-14`):
| 生产 sink 回放 | replay wall | 累计 CPU bin | GPU 阶段 | process wall |
| --- | ---: | ---: | ---: | ---: |
| sink 内串行分桶 | 3.886 s | 0.549 s | 3.659 s | 5.778 s |
| 16 worker 私有预分桶 | 3.958 s | 0.709 s(各 worker 求和) | 3.670 s | 5.873 s |
此输入上并行预分桶没有端到端收益,且累计 CPU 工作与 RSS 上升(约 716→770 MiB)。由于这
份输入已被全天结果证明低估真实分桶与 tile kernel 成本,此试验仍不能判断全天会否受益,
更不能宣称 61 s 的 kernel 收益已被回收。**不据此再跑完整全天。**需要先取得代表实际
36,530 chunks 的 support-expanded references/tasks 分布和并行分桶 wall,再决定是否继续此方向。
真实小型 4K lens-map renderer 中,16 workers 处理 156,837 events,13 tile +3 atomic
batches;13 个 tile chunk 共 6,145,194 references、64,056 tasks、5,465 merges,单 chunk
最多 561,449 references。PNG SHA-256 与先前 atomic 输出同为
`99a971fac7f5e66f0a1aafd0921b61f16fcb933c9488320f95e423542d3b6a6d`。另一个
32,771-event mixed boundary 回放包含 2 tile +1 atomic chunk 和 direct fallback,通过 CPU
double reference,`max_abs=5.96856e-11`、`max_rel=5.95958e-13`。HIP primitive 与
`make -j4 ENABLE_PNG=1 test` 均通过。
新原始日志:`parallel_prebin_{serial_128_validated,16workers_128_validated}.log`、
`parallel_prebin_renderer_workload.log`、`parallel_prebin_mixed_boundary.log`、
`parallel_prebin_hip_primitive.log`。先前 `parallel_prebin_16workers_128.log` 因 OpenMP
`reduction(max:failed)` 的私有初值而没有提交事件;原始失败保留,修正为 `reduction(+:failed)`
后的 `*_v2.log` 才是首次有效回放,最终数字以上述带 scaled reference 校验的日志为准。
为获取不经 GPU 的真实全天 support 分布,dummy 后端增加显式
`DUMMY_PSF_SUPPORT_STATS=1` 诊断:每 worker 保存最多 16,384 个事件,在 chunk flush 时按
production 的 cache-limited 矩形 support 统计 16px references、touched tiles、按 256
references 切分的 tasks、最大单 tile 列表和第一遍计数耗时。它不生成 HDR、不 materialize
references、不上传 GPU,不能把第一遍耗时等同于完整两遍分桶成本。21,087-star 小样通过,
原始记录为 `parallel_prebin_dummy_support_small.log`;该样的 chunk 边界受 OpenMP 动态调度
影响,不与 HIP renderer 的逐 chunk 列表配对。完整全天诊断结果见下文。
下一次完整全天诊断使用与已跑的 dummy 任务相同的参数,只额外设置环境变量;输出路径仅
满足 CLI,dummy 不写图像:
```sh
OMP_NUM_THREADS=16 OMP_DYNAMIC=FALSE DUMMY_PSF_SUPPORT_STATS=1 \
./build/Release/schwarzschild_sky_dummy --verbose \
--psf-relative-tail 1e-8 --psf-min-y 0 --max-cache-psf-flux 1e8 \
--all-sky-catalog assets/2mass/processed/all_sky --exposure 1e13 \
--psf-fwhm-pixels 2.7 --psf-moffat-beta 4.5 --catalog-load-workers 4 \
--lens-map-input output/lens/schwarzschild_galactic_center_R100_45deg_16_4_4k_.grlens \
--output /tmp/2mass_dummy_support_diagnostic.png
```
用户随后运行了上述完整全天 dummy 诊断;原始终端输出为
[`full_dummy_support_user.log`](hip_psf_replay_2026-09-07/full_dummy_support_user.log),
SHA-256 `992a3109de28a338c53af229b6a3b4083659a835f78929c36d36178358a6d5e0`。
日志未嵌入执行时 Git/binary hash;运行后本地 dummy binary 的 SHA-256 为
`2550fbdc7367ec4d56bdf87894e1322d7f4af5165e93a17af3e6a37806c0649a`。
同一 343,363,141 stars 产生 598,264,924 cached events,0 direct/wing/discard;
64,440 catalog tiles 全部加载,49.020 s;16 worker 分类/chunk wall 81.760 s。zsh `time`
给出总时间 2:11.91;zsh 对 pipeline 中的 `tee` 另列一行,不能把两个 2:11.91 相加。
该次动态调度产生 36,508 个满 chunk、16 个 partial;与 HIP 的 36,530 batches 不作逐批
配对,但总事件数一致。
| 全天满 chunk support 统计 | p50 | p90 | p99 | max |
| --- | ---: | ---: | ---: | ---: |
| 16px references | 746,748.5 | 802,816 | 802,816 | 802,816 |
| touched 16px tiles | 49 | 168 | 1,036 | 1,521 |
| tile tasks | 2,975 | 3,136 | 3,435.93 | 3,733 |
| 最大 tile 列表 | 16,384 | 16,384 | 16,384 | 16,384 |
| 第一遍计数 | 0.807 ms | 0.919 ms | 1.049 ms | 7.969 ms |
全部 chunk 合计 27,216,790,943 references、107,847,441 tasks,worker 第一遍计数时间之和
29.347 s。这是并行 worker 时间之和,**不是**额外 wall time,也不包括第二遍写 references、
任务构造、锁内 staging 或 GPU 上传。全天 HIP 串行完整分桶为 155.302 s,不能拿 29.347 s
直接替换它。第一遍显示每个事件平均覆盖约 45.5 个 16px tile;满 chunk 的 p90 已到
`16,384 × 49`,且最大列表从中位数起就是整批事件。
对旧真实 `center_65536.events` 逐 chunk 用相同 support 矩形计算,四批 references 为
745,430 / 725,200 / 753,474 / 749,671,接近全天 p50;但 touched tiles 为
96 / 162 / 203 / 222,最大列表仅 14,637 / 9,099 / 11,188 / 9,220。因此先前有界
样本只匹配了引用总量,没匹配热点集中度。为区分这两个量,`make_hotspot_fixture.py` 把
原事件平移到相同整数像素,或保留约 8×8px 位置散布;颜色、flux、support 原样保留,
亚像素余数仅受 double 舍入影响。这两份**明确是反事实 GPU workload,不是物理星像**。
固定热点每批恰好 802,816 references、49 tiles、3,136 tasks、最大列表 16,384;
输入 SHA-256 分别为 `de39e07d420f70aaa2f7309d209e58a1091d2bea4ca6d8332366e6944f19347b`
与 `87f90c2e43845962702e1643f9b7a635108b75b6e21a30080650442745cadcf6`。
| 128 轮、512 批回放 | atomic wall | tile 串行 wall | tile 并行 wall | atomic GPU 阶段 | tile GPU 阶段 |
| --- | ---: | ---: | ---: | ---: | ---: |
| 同一整数像素 | 7.711 s | 4.001 s | 4.071 s | 7.677 s | 3.760 s |
| 8×8px 散布 | 6.482 s | 3.949 s | 4.046 s | 6.447 s | 3.714 s |
全部回放通过按轮数缩放的 CPU double reference,tile 的最大相对误差不超过
`3.30e-14`。此对照说明 refs/tile/list 聚合量不足以重现全天 tile GPU 阶段
`416.265/36,530 = 11.40 ms/batch`:即使强制匹配 p90 热点,回放仍约
`7.3 ms/batch`。另外在 `center_65536.events` 的同一回放进程内放入 15 个 CPU 忙等线程,
atomic/tile GPU 阶段为 7.126/3.669 s(512 批),几乎仍是无忙等线程的
7.13/3.66 s;简单主机抢占也未重现全天差距。上述 workload 与争用实验均为诊断性
反事实,不能改变真实全天 adaptive 慢 20% 的结论。
原始配对日志:`hotspot_{atomic,adaptive_serial,adaptive_parallel}_128.log`、
`hotspot_jitter8_{atomic,adaptive_serial,adaptive_parallel}_128.log`、
`busy_center_{atomic,adaptive}_128.log`。全天 adaptive 原始进度每隔约 5 秒报告累计 HIP
阶段:首尾约 7–8 ms/batch,中间约 12–13 ms/batch 持续数万批。这提示当前固定 65,536
events 输入未覆盖真实流中的长期困难区段,但也不能排除其他随时间变化的系统因素;
原因仍未定位。当时提出从该区段捕获真实 events 和逐批 GPU/CPU 明细;
2026-09-13 已搁置这项旧版追溯,不再作为新版推进的前置条件。
其余原始证据为 `final_production_{atomic,adaptive}_128.log`、
`final_production_adaptive_dense.log`、
`final_production_dispersed_{atomic,adaptive}_64.log`、
`final_production_adaptive_mixed.log`、`final_hip_test_adaptive.log` 和
`final_renderer_{atomic,adaptive}.log`。每份日志包含完整命令、timeout、Git hash、binary hash
及原始输出。production 默认值没有改变。
实现入口:
- [capture_psf.c](../tests/capture_psf.c):调用真实 producer 的测试专用 consumer,捕获或诊断,不生成 HDR。
@@ -69,6 +263,79 @@ process wall 和 exit status。所有性能进程均由现有独占 runner 串
- [test_psf_capture.py](../tests/test_psf_capture.py):边界限制、分类、串行/并行/索引摘要、拒绝覆盖验证。
- [全部原始证据与索引](hip_psf_replay_2026-09-07/README.md)。
## 2026-09-13 全天复测与下一步目标
用户在重新构建 worker 私有预分桶版本后,再次完成同配置全天 adaptive 渲染;随后
`git stash` 回到 `2d01c2c`,重新构建并复测原 atomic,之后用 `git stash pop` 恢复修改。
该 HEAD 的 HIP 实现不读取 `HIP_PSF_ACCUMULATION`,所以 atomic 复测命令虽仍写着
`adaptive`,实际是 atomic;不能把输出文件名或环境变量当作算法证据。
| 全天实现 | splat wall | GPU event 阶段 | CPU bin | upload | process wall |
| --- | ---: | ---: | ---: | ---: | ---: |
| 历史 atomic | 480.500 s | 477.302449 s | 0 | 1.411367 s | 533.62 s |
| 旧串行 adaptive | 586.763 s | 416.265471 s | 155.302 s,串行 | 7.506981 s | 640.35 s |
| 新并行预分桶 adaptive | 282.944 s | 256.184375 s | 134.374 s,worker 累加 | 7.184765 s | 335.75 s |
| 本次 atomic 复测 | 481.417 s | 478.336515 s | 0 | 1.432135 s | 534.37 s |
四次总事件数均为 598,264,924、batches 均为 36,530;两次 adaptive 都选择 36,515 tile16
和 15 atomic batches。新 adaptive 无 direct/wing/discard,references 为 27,216,530,468、
tasks 为 107,238,420、merges 为 2,802,462,峰值 references/chunk 为 802,816。
新 adaptive 和旧 adaptive 均已使用相同 payload 的黑体 LUT;catalog 加载分别为
49.334/50.104 s。新版 bin 时间是各 worker 的经过时间之和,可以与 GPU 重叠,不能加到
splat wall 上,也不能与旧版串行 bin 作等口径的关键路径比较。
atomic 的 splat/GPU 复测仅比历史值高约 0.2%。相对本次 atomic,新 adaptive 的 splat
快约 1.70×、GPU event 阶段快约 1.87×、完整进程快约 1.59×。这支持继续推进新版;
尚不是相同 binary 内的 atomic/adaptive 配对,也不证明新版全天 HDR 数值正确性。
新旧 adaptive 的 splat 差 303.819 s,其中 GPU event 阶段差 160.081 s;不能把全部收益
归因于分桶并行化。旧版 GPU 阶段为何更慢仍未知,保留历史证据,**停止专项追溯**;仅当
新版出现可重复退化或正确性问题且旧版信息有助定位时重新调查。
新 adaptive 完整原文见
[full_parallel_prebin_adaptive_user_2026-09-13.log](hip_psf_replay_2026-09-07/full_parallel_prebin_adaptive_user_2026-09-13.log);
atomic 复测仅收到结尾摘录,原样保存为
[full_atomic_redo_user_2026-09-13_excerpt.log](hip_psf_replay_2026-09-07/full_atomic_redo_user_2026-09-13_excerpt.log)。
两者均未提供运行时 binary hash,摘录不能代替完整命令和完整运行日志;本次只更新文档,
没有重新运行 benchmark 或比较新生成的全天 HDR。
### 新版优化目标与验证顺序(待实施)
目标是在相同 RX 9070、4K lens map、全天 catalog、PSF/曝光/黑体参数和 HDR/PNG 输出下,
将完整进程从 335.75 s 推进到 **240 s/张以内**。这是待验证目标,不是性能承诺;不能通过
降低精度、删减事件、改变 tail/min-Y、缩小输入或省略输出来达标。atomic 保留为参考和
显式可选路径,本次不修改默认算法。
用户全程观察新版的 btop:GPU 常在约 94%,会反复降至约 80%,并非偶发;整机 CPU
持续满载。用户另报告原 atomic 能吃满 GPU。旧串行 adaptive 当时没有观测,不能推断它
不存在 GPU 不满载现象。上述是人工观测,未保存同步遥测,不能据此量化净算力利用率。
新版 generation/submission 累计分别为 814.275/3712.364 s,后者包含分桶、锁等待和
提交/完成等待;atomic 复测的 GPU 阶段占 splat wall 约 99.36%,进程仍为 1461% CPU。
CPU 满载不等于有效 producer 工作,忙等是需测量的嫌疑,尚未定量确认。
新版非 splat 阶段约 52.806 s;即使消除 splat wall 与 GPU event 阶段之间的全部
26.760 s,总进程仍约 309 s。若其他阶段不变,240 s 目标要求 splat 不超过约 187.2 s,
比当前 GPU event 阶段还低约 27%。该 event 区间包围 prepare/accumulate/merge,可能含
提交间隙,不等同于三个 kernel 的净执行时间。因此同时调查管线空隙和 GPU 执行成本,
不能把 btop 达到 100% 当作验收标准。
1. 先比较已有新版 adaptive 与 atomic 全天 HDR:finite、逐像素误差、RGB/Y 总通量,
使用现有正确性阈值;记录输出 hash,不为这一步重跑全天。
2. 增加可关闭的有界诊断,拆分 CPU 分桶、锁等待、锁持有、GPU 完成等待、staging 和
提交时间,记录线程 CPU time;GPU 分别测 prepare、accumulate、merge,并保留原总区间。
在新版代表性真实流式小样上同步记录 GPU busy、时钟、功耗、温度,先验证测量开销。
固定事件回放用于隔离成本,不能单独替代生产 producer/sink 的端到端证据。
3. 若批间空隙显著,优先评估双缓冲 staging/上传,使下一批准备与当前批 GPU 执行重叠;
若共享锁争用显著,再对照专用提交线程加有界队列。这些是待验证候选,不是已选定实现。
明确缓冲 ownership、完成后复用和有界背压;单 sink 持有 GPU HDR,保留 direct fallback
的 finish/download/CPU/upload 顺序,不引入 per-event task 或无界排队。
4. 管线改善后重测剩余成本;若主要时间仍在 kernel,则优化占比最大的实际 kernel;若
catalog 加载成为主要限制,再单独评估输入阶段。保留密集、分散和 mixed/direct 回归。
有界配对采用相同 binary/输入、预热后至少三次交错顺序复测,报告 wall、CPU time、
GPU 分阶段及波动,不累加重叠 worker 时间。每次预设 timeout,串行独占执行,保留完整
命令、Git/diff/binary/input hash、原始日志与退出码;GPU 不可用直接失败。
5. 有界正确性与收益验证后再另行安排全天配对确认,同时报告完整进程和分阶段时间。
未达到 240 s 时记录剩余差距及实测瓶颈;不为解释旧版而额外运行全天。
## 环境与测量纪律
Git 基线 `5eccc31c99db96de2a0597babf2fd4c2149e91e7`,测量时在此基础上有未提交修改。
@@ -13,11 +13,28 @@
- `boundary_validated_*.log`:合成边界/热点/wing/multi-chunk/CPU direct 恢复的 double HDR 对照。
- `*_regression.log` / `*_integration.log` / `schwarzschild_*.log`:集成和回归输出。
- `device_resources.log`:编译器资源报告,不是运行时性能计数器。
- `full_production_adaptive_user.log`:用户执行的旧串行分桶全天 adaptive 原始终端输出;命令和
HIP 计时在日志内,未嵌入执行时 binary/Git hash,不能当作 runner 的 provenance。
- `full_parallel_prebin_adaptive_user_2026-09-13.log`:新版并行预分桶全天运行的用户完整附件原文。
- `full_atomic_redo_user_2026-09-13_excerpt.log`:stash 回 HEAD 重编译后的 atomic 复测结尾摘录,
不是完整日志;该 HEAD 忽略命令中的 adaptive 环境变量。两份新记录均缺少运行时 binary hash。
当前方向为搁置旧 adaptive 慢因追溯、优化新版生产管线,240 s/张为待验证目标,详见上级报告。
- `parallel_prebin_*.log`:producer 私有预分桶的有界回放、混合 direct 边界、HIP primitive、
小型真实 renderer 与可选 dummy support 诊断。`parallel_prebin_16workers_128.log` 是
OpenMP reduction 初值错误导致的零提交无效运行;有效数字以 `*_validated.log` 为准。
- `full_dummy_support_user.log`:用户运行的真实全天 dummy support 分位数与第一遍计数原始输出;
没有 GPU/HDR,也没有在日志中记录执行时 binary hash。
- `make_hotspot_fixture.py` / `center_hotspot*.events` / `hotspot_*.log`:从捕获的真实事件
保留颜色、flux、support 和亚像素余数,重排整数像素位置构成的明确反事实热点,验证
聚合 references/tile/list 指标的预测力,不作为物理星像。
- `busy_center_*.log`:同一进程中额外 15 个 CPU 忙等线程的有界 HIP 回放对照。
`run.py` 对测试进程使用独占锁,启动前检查已有 renderer/replay 进程,单独进程组限时;
超时后 kill 并 wait/reap,任何失败停止后续执行。日志用独占创建,重跑应使用新的输出目录
或新日志标签,不能覆盖本次证据。每个日志记录命令、超时、Git hash、直接执行的 binary hash、
原始 stdout/stderr、进程 wall 和退出码。Python 集成脚本涉及的 binary hash 另在 metadata 中记录。
用户粘贴的完整全天 adaptive 输出是上述例外,按原文另存并保留事后 binary hash 与
输出图像的独立校验,不把事后 hash 误称为运行时记录。
初次沙箱探测没有 ROCm 设备;宿主运行成功。`atomic_first.log` 不是 GPU 硬件故障证据。
`v2_disperse_*_16_0.log` 的 scratch 超限后已停止,修正的是单列表 tile 的 ownership,未提高上限。
@@ -0,0 +1,8 @@
COMMAND OMP_NUM_THREADS=16 OMP_DYNAMIC=FALSE env HIP_PSF_ACCUMULATION=adaptive build/Release/replay_psf benchmarks/hip_psf_replay_2026-09-07/center_65536.events 65536 production-busy 128
TIMEOUT 45s
GIT 2d01c2c101ccea8193a64bb46ceafca3009f0ef5
BINARY_SHA256 876b6c3d92312e42b8521887d3ad15a95d28185ec6d7fe480bb765bd597ce85e
PSF cache ready: 64x64 phases, radius 47 px, relative tail 1e-08, tail abs 1e-06, boundary 1e-07, build 0.706 s
device=AMD Radeon RX 9070 arch=gfx1201 events=65536 rounds=128 frame=3840x2160 mode=production-busy distribution=captured contributions_per_round=432818979 CPU_reference=0.819939137 create=0.042913914
complete_replay=3.962181807 replay_wall=3.919267893 select=0.054163949 bin=1.240586689 upload=0.092119292 prepare=0.000000000 accumulation=3.668894874 merge=0.000000000 download=0.005043460 cleanup=0.000000000 events_s=2140350.757 contributions_s=14135504595.959 center_tiles=0 tile_chunks=512 atomic_chunks=0 refs=0 tasks=0 scratch_used_peak=0 scratch_device_reserved=0 RSS_KiB=716016 max_abs=4.2500725161431774e-17 max_rel=2.146162751251728e-14 flux_R=-1.871866178468806e-16 flux_G=1.3413216273651358e-16 flux_B=8.2669907468878767e-17 flux_Y=1.6595004964231178e-17 validation=scaled-cpu-double-reference
PROCESS_WALL 5.826439530 EXIT 0
@@ -0,0 +1,9 @@
COMMAND OMP_NUM_THREADS=16 OMP_DYNAMIC=FALSE env HIP_PSF_ACCUMULATION=atomic build/Release/replay_psf benchmarks/hip_psf_replay_2026-09-07/center_65536.events 65536 production-busy 128
TIMEOUT 45s
GIT 2d01c2c101ccea8193a64bb46ceafca3009f0ef5
BINARY_SHA256 876b6c3d92312e42b8521887d3ad15a95d28185ec6d7fe480bb765bd597ce85e
PSF cache ready: 64x64 phases, radius 47 px, relative tail 1e-08, tail abs 1e-06, boundary 1e-07, build 0.691 s
device=AMD Radeon RX 9070 arch=gfx1201 events=65536 rounds=128 frame=3840x2160 mode=production-busy distribution=captured contributions_per_round=432818979 CPU_reference=0.824468851 create=0.039535046
HIP PSF progress: 5832704 submitted / 5799936 completed events; 354 / 356 batches timed; kernel 4.947 s
complete_replay=7.198877096 replay_wall=7.159342051 select=0.000000000 bin=0.000000000 upload=0.024048809 prepare=0.000000000 accumulation=7.125524449 merge=0.000000000 download=0.005060978 cleanup=0.000000000 events_s=1171700.966 contributions_s=7738257080.164 center_tiles=0 tile_chunks=0 atomic_chunks=512 refs=0 tasks=0 scratch_used_peak=0 scratch_device_reserved=0 RSS_KiB=706576 max_abs=2.8777327742979253e-14 max_rel=4.2863124632598364e-12 flux_R=-2.8216587351205239e-13 flux_G=-4.377441999141077e-13 flux_B=-9.6631266798699205e-13 flux_Y=-3.9782880312410178e-13 validation=scaled-cpu-double-reference
PROCESS_WALL 9.081153592 EXIT 0
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
@@ -0,0 +1,6 @@
COMMAND OMP_NUM_THREADS=16 OMP_DYNAMIC=FALSE env HIP_PSF_ACCUMULATION=adaptive build/Release/test_hip_psf
TIMEOUT 45s
GIT 2d01c2c101ccea8193a64bb46ceafca3009f0ef5
BINARY_SHA256 385c661f266303245a0c9a6fc12bc6c6a6c50a4a7d01c4943c8abe7d048051cb
HIP PSF cache comparison: max_abs=2.8421709430404007e-14 max_rel=7.5319184269262976e-16
PROCESS_WALL 0.765339561 EXIT 0
@@ -0,0 +1,8 @@
COMMAND OMP_NUM_THREADS=16 OMP_DYNAMIC=FALSE env HIP_PSF_ACCUMULATION=adaptive build/Release/replay_psf benchmarks/hip_psf_replay_2026-09-07/center_65536.events 65536 production 128
TIMEOUT 45s
GIT 2d01c2c101ccea8193a64bb46ceafca3009f0ef5
BINARY_SHA256 c560c193e1dc2104030ed804ea68e16ab7576592191dbf147b917a6e097a66b6
PSF cache ready: 64x64 phases, radius 47 px, relative tail 1e-08, tail abs 1e-06, boundary 1e-07, build 0.679 s
device=AMD Radeon RX 9070 arch=gfx1201 events=65536 rounds=128 frame=3840x2160 mode=production distribution=captured contributions_per_round=432818979 CPU_reference=0.803933859 create=0.041956186
complete_replay=4.673365355 replay_wall=4.631409168 select=0.017568200 bin=0.606590578 upload=0.090861082 prepare=0.000000000 accumulation=3.875436176 merge=0.000000000 download=0.004491792 cleanup=0.000000000 events_s=1811243.122 contributions_s=11961981180.992 center_tiles=0 tile_chunks=512 atomic_chunks=0 refs=0 tasks=0 scratch_used_peak=0 scratch_device_reserved=0 RSS_KiB=710252 max_abs=0.0079141092811036706 max_rel=127.00000000000276 flux_R=126.99999999999998 flux_G=127.00000000000002 flux_B=127.00000000000001 flux_Y=127 validation=skipped-for-sustained-timing
PROCESS_WALL 6.478951222 EXIT 0
@@ -0,0 +1,8 @@
COMMAND OMP_NUM_THREADS=16 OMP_DYNAMIC=FALSE env HIP_PSF_ACCUMULATION=adaptive build/Release/replay_psf benchmarks/hip_psf_replay_2026-09-07/center_65536.events 65536 production
TIMEOUT 45s
GIT 2d01c2c101ccea8193a64bb46ceafca3009f0ef5
BINARY_SHA256 c560c193e1dc2104030ed804ea68e16ab7576592191dbf147b917a6e097a66b6
PSF cache ready: 64x64 phases, radius 47 px, relative tail 1e-08, tail abs 1e-06, boundary 1e-07, build 0.681 s
device=AMD Radeon RX 9070 arch=gfx1201 events=65536 rounds=1 frame=3840x2160 mode=production distribution=captured contributions_per_round=432818979 CPU_reference=0.810852051 create=0.039834023
complete_replay=0.100405931 replay_wall=0.060571909 select=0.000202057 bin=0.005350538 upload=0.000762410 prepare=0.000000000 accumulation=0.049273020 merge=0.000000000 download=0.004678367 cleanup=0.000000000 events_s=1081953.683 contributions_s=7145539681.629 center_tiles=0 tile_chunks=4 atomic_chunks=0 refs=0 tasks=0 scratch_used_peak=0 scratch_device_reserved=0 RSS_KiB=709812 max_abs=2.7105054312137611e-19 max_rel=1.9611487209714066e-14 flux_R=-2.8081518355845397e-17 flux_G=4.7080671715585728e-17 flux_B=5.9271432925574641e-17 flux_Y=2.0330567515243999e-17 validation=cpu-double-reference
PROCESS_WALL 1.917997780 EXIT 0
@@ -0,0 +1,8 @@
COMMAND OMP_NUM_THREADS=16 OMP_DYNAMIC=FALSE env HIP_PSF_ACCUMULATION=adaptive build/Release/replay_psf benchmarks/hip_psf_replay_2026-09-07/boundary.events 32771 production mixed
TIMEOUT 45s
GIT 2d01c2c101ccea8193a64bb46ceafca3009f0ef5
BINARY_SHA256 c560c193e1dc2104030ed804ea68e16ab7576592191dbf147b917a6e097a66b6
PSF cache ready: 64x64 phases, radius 47 px, relative tail 1e-08, tail abs 1e-06, boundary 1e-07, build 0.676 s
device=AMD Radeon RX 9070 arch=gfx1201 events=32771 rounds=1 frame=128x96 mode=production distribution=fixture-mixed-direct contributions_per_round=142133685 CPU_reference=0.269774914 create=0.041043043
complete_replay=0.063739061 replay_wall=0.022696018 select=0.000161632 bin=0.002192053 upload=0.000314724 prepare=0.000000000 accumulation=0.017333046 merge=0.000000000 download=0.000132500 cleanup=0.000000000 events_s=1443909.662 contributions_s=6262494311.934 center_tiles=0 tile_chunks=2 atomic_chunks=1 refs=0 tasks=0 scratch_used_peak=0 scratch_device_reserved=0 RSS_KiB=318300 max_abs=5.9685589803848416e-11 max_rel=5.9595772318269279e-13 flux_R=2.8323267191886195e-14 flux_G=-5.5281251977629701e-15 flux_B=9.6507636840237455e-15 flux_Y=1.1503592402127278e-14 validation=cpu-double-reference
PROCESS_WALL 1.116671452 EXIT 0
@@ -0,0 +1,9 @@
COMMAND OMP_NUM_THREADS=16 OMP_DYNAMIC=FALSE build/Release/replay_psf benchmarks/hip_psf_replay_2026-09-07/center_65536.events 65536 production 128
TIMEOUT 45s
GIT 2d01c2c101ccea8193a64bb46ceafca3009f0ef5
BINARY_SHA256 c560c193e1dc2104030ed804ea68e16ab7576592191dbf147b917a6e097a66b6
PSF cache ready: 64x64 phases, radius 47 px, relative tail 1e-08, tail abs 1e-06, boundary 1e-07, build 0.676 s
device=AMD Radeon RX 9070 arch=gfx1201 events=65536 rounds=128 frame=3840x2160 mode=production distribution=captured contributions_per_round=432818979 CPU_reference=0.814886808 create=0.038450003
HIP PSF progress: 5832704 submitted / 5799936 completed events; 354 / 356 batches timed; kernel 4.952 s
complete_replay=7.202497959 replay_wall=7.164047956 select=0.000000000 bin=0.000000000 upload=0.023486261 prepare=0.000000000 accumulation=7.131542888 merge=0.000000000 download=0.004844275 cleanup=0.000000000 events_s=1170931.302 contributions_s=7733173988.875 center_tiles=0 tile_chunks=0 atomic_chunks=512 refs=0 tasks=0 scratch_used_peak=0 scratch_device_reserved=0 RSS_KiB=706176 max_abs=0.0079141092810748794 max_rel=127.00000000011484 flux_R=126.99999999996387 flux_G=126.99999999994397 flux_B=126.99999999987631 flux_Y=126.99999999994908 validation=skipped-for-sustained-timing
PROCESS_WALL 9.034112904 EXIT 0
@@ -0,0 +1,8 @@
COMMAND OMP_NUM_THREADS=16 OMP_DYNAMIC=FALSE env HIP_PSF_ACCUMULATION=adaptive build/Release/replay_psf benchmarks/hip_psf_replay_2026-09-07/center_65536.events 65536 production disperse 64
TIMEOUT 45s
GIT 2d01c2c101ccea8193a64bb46ceafca3009f0ef5
BINARY_SHA256 c560c193e1dc2104030ed804ea68e16ab7576592191dbf147b917a6e097a66b6
PSF cache ready: 64x64 phases, radius 47 px, relative tail 1e-08, tail abs 1e-06, boundary 1e-07, build 0.713 s
device=AMD Radeon RX 9070 arch=gfx1201 events=65536 rounds=64 frame=3840x2160 mode=production distribution=synthetic-phase-preserving-dispersal contributions_per_round=432818979 CPU_reference=1.496155024 create=0.039879084
complete_replay=3.206732988 replay_wall=3.166853905 select=0.028179130 bin=0.000000000 upload=0.010955625 prepare=0.000000000 accumulation=3.148403003 merge=0.000000000 download=0.005200609 cleanup=0.000000000 events_s=1324438.741 contributions_s=8746982175.173 center_tiles=0 tile_chunks=0 atomic_chunks=256 refs=0 tasks=0 scratch_used_peak=0 scratch_device_reserved=0 RSS_KiB=707960 max_abs=0.0014055646242820245 max_rel=63.000000000002466 flux_R=63 flux_G=63.000000000000001 flux_B=62.999999999999985 flux_Y=63.000000000000001 validation=skipped-for-sustained-timing
PROCESS_WALL 5.780106673 EXIT 0
@@ -0,0 +1,8 @@
COMMAND OMP_NUM_THREADS=16 OMP_DYNAMIC=FALSE build/Release/replay_psf benchmarks/hip_psf_replay_2026-09-07/center_65536.events 65536 production disperse 64
TIMEOUT 45s
GIT 2d01c2c101ccea8193a64bb46ceafca3009f0ef5
BINARY_SHA256 c560c193e1dc2104030ed804ea68e16ab7576592191dbf147b917a6e097a66b6
PSF cache ready: 64x64 phases, radius 47 px, relative tail 1e-08, tail abs 1e-06, boundary 1e-07, build 0.682 s
device=AMD Radeon RX 9070 arch=gfx1201 events=65536 rounds=64 frame=3840x2160 mode=production distribution=synthetic-phase-preserving-dispersal contributions_per_round=432818979 CPU_reference=1.502417088 create=0.036504030
complete_replay=3.205429077 replay_wall=3.168925047 select=0.000000000 bin=0.000000000 upload=0.011766365 prepare=0.000000000 accumulation=3.148850317 merge=0.000000000 download=0.006101909 cleanup=0.000000000 events_s=1323573.116 contributions_s=8741265333.150 center_tiles=0 tile_chunks=0 atomic_chunks=256 refs=0 tasks=0 scratch_used_peak=0 scratch_device_reserved=0 RSS_KiB=706420 max_abs=0.0014055646242820245 max_rel=63.000000000002466 flux_R=63 flux_G=63.000000000000001 flux_B=62.999999999999985 flux_Y=63.000000000000001 validation=skipped-for-sustained-timing
PROCESS_WALL 5.728801961 EXIT 0
@@ -0,0 +1,217 @@
COMMAND OMP_NUM_THREADS=16 OMP_DYNAMIC=FALSE env HIP_PSF_ACCUMULATION=adaptive build/Release/schwarzschild_sky_hip --verbose --psf-relative-tail 1e-8 --psf-min-y 0 --max-cache-psf-flux 1e8 --all-sky-catalog /tmp/gr-hip-catalog-multi --exposure 1e13 --psf-fwhm-pixels 2.7 --psf-moffat-beta 4.5 --catalog-load-workers 4 --lens-map-input output/lens/schwarzschild_galactic_center_R100_45deg_16_4_4k_.grlens --output /tmp/final_renderer_adaptive.png
TIMEOUT 60s
GIT 2d01c2c101ccea8193a64bb46ceafca3009f0ef5
BINARY_SHA256 f51cbccac135502440f005c5d61d95d6004be7d4ec5cd09bfe04bab53053143d
Blackbody LUT: 1024 CIE 1931 2-deg 1 nm-linear XYZ nodes, T=[670.146556, 101408.88] K, loaded assets/blackbody/cie1931_2deg_xyz_1024.grbblut in 0.000033 s; payload fnv1a64=0e39867b0e70a809
Blackbody backend: lut
PSF cache ready: 64x64 phases, radius 47 px, relative tail 1e-08, tail abs 1e-06, boundary 1e-07, build 0.834 s
Frame 0: finding and prefetching catalog tiles...
Catalog prefetch: 64440 requested, 3 newly loaded (21087 stars), 64437 unavailable in 0.032 s; 4 loader workers
Frame 0: catalog prefetch finished (64440 candidate tiles).
Frame 0: splatting 130882 lens triangles...
Frame 0: splat worker 1/16 started.
Frame 0: splat worker 9/16 started.
Frame 0: splat worker 10/16 started.
Frame 0: splat worker 5/16 started.
Frame 0: splat worker 16/16 started.
Frame 0: splat worker 8/16 started.
Frame 0: splat worker 13/16 started.
Frame 0: splat worker 8/16 reached 8 local triangles.
Frame 0: splat worker 1/16 reached 8 local triangles.
Frame 0: splat worker 9/16 reached 8 local triangles.
Frame 0: splat worker 8/16 reached 16 local triangles.
Frame 0: splat worker 1/16 reached 16 local triangles.
Frame 0: splat worker 9/16 reached 16 local triangles.
Frame 0: splat worker 12/16 started.
Frame 0: splat worker 14/16 started.
Frame 0: splat worker 2/16 started.
Frame 0: splat worker 14/16 reached 8 local triangles.
Frame 0: splat worker 10/16 reached 8 local triangles.
Frame 0: splat worker 14/16 reached 16 local triangles.
Frame 0: splat worker 2/16 reached 8 local triangles.
Frame 0: splat worker 16/16 reached 8 local triangles.
Frame 0: splat worker 7/16 started.
Frame 0: splat worker 1/16 reached 32 local triangles.
Frame 0: splat worker 7/16 reached 8 local triangles.
Frame 0: splat worker 7/16 reached 16 local triangles.
Frame 0: splat worker 1/16 reached 64 local triangles.
Frame 0: splat worker 7/16 reached 32 local triangles.
Frame 0: splat worker 7/16 reached 64 local triangles.
Frame 0: splat worker 1/16 reached 128 local triangles.
Frame 0: splat worker 11/16 started.
Frame 0: splat worker 9/16 reached 32 local triangles.
Frame 0: splat worker 11/16 reached 8 local triangles.
Frame 0: splat worker 11/16 reached 16 local triangles.
Frame 0: splat worker 11/16 reached 32 local triangles.
Frame 0: splat worker 9/16 reached 64 local triangles.
Frame 0: splat worker 11/16 reached 64 local triangles.
Frame 0: splat worker 3/16 started.
Frame 0: splat worker 15/16 started.
Frame 0: splat worker 12/16 reached 8 local triangles.
Frame 0: splat worker 13/16 reached 8 local triangles.
Frame 0: splat worker 5/16 reached 8 local triangles.
Frame 0: splat worker 10/16 reached 16 local triangles.
Frame 0: splat worker 2/16 reached 16 local triangles.
Frame 0: splat worker 8/16 reached 32 local triangles.
Frame 0: splat worker 4/16 started.
Frame 0: splat worker 6/16 started.
Frame 0: splat worker 16/16 reached 16 local triangles.
Frame 0: splat worker 14/16 reached 32 local triangles.
Frame 0: splat worker 13/16 reached 16 local triangles.
Frame 0: splat worker 10/16 reached 32 local triangles.
Frame 0: splat worker 7/16 reached 128 local triangles.
Frame 0: splat worker 13/16 reached 32 local triangles.
Frame 0: splat worker 10/16 reached 64 local triangles.
Frame 0: splat worker 13/16 reached 64 local triangles.
Frame 0: splat worker 4/16 reached 8 local triangles.
Frame 0: splat worker 6/16 reached 8 local triangles.
Frame 0: splat worker 4/16 reached 16 local triangles.
Frame 0: splat worker 6/16 reached 16 local triangles.
Frame 0: splat worker 11/16 reached 128 local triangles.
Frame 0: splat worker 3/16 reached 8 local triangles.
Frame 0: splat worker 16/16 reached 32 local triangles.
Frame 0: splat worker 4/16 reached 32 local triangles.
Frame 0: splat worker 6/16 reached 32 local triangles.
Frame 0: splat worker 14/16 reached 64 local triangles.
Frame 0: splat worker 10/16 reached 128 local triangles.
Frame 0: splat worker 12/16 reached 16 local triangles.
Frame 0: splat worker 1/16 reached 256 local triangles.
Frame 0: splat worker 12/16 reached 32 local triangles.
Frame 0: splat worker 15/16 reached 8 local triangles.
Frame 0: splat worker 9/16 reached 128 local triangles.
Frame 0: splat worker 15/16 reached 16 local triangles.
Frame 0: splat worker 15/16 reached 32 local triangles.
Frame 0: splat worker 12/16 reached 64 local triangles.
Frame 0: splat worker 4/16 reached 64 local triangles.
Frame 0: splat worker 5/16 reached 16 local triangles.
Frame 0: splat worker 3/16 reached 16 local triangles.
Frame 0: splat worker 15/16 reached 64 local triangles.
Frame 0: splat worker 3/16 reached 32 local triangles.
Frame 0: splat worker 16/16 reached 64 local triangles.
Frame 0: splat worker 14/16 reached 128 local triangles.
Frame 0: splat worker 4/16 reached 128 local triangles.
Frame 0: splat worker 3/16 reached 64 local triangles.
Frame 0: splat worker 8/16 reached 64 local triangles.
Frame 0: splat worker 15/16 reached 128 local triangles.
Frame 0: splat worker 7/16 reached 256 local triangles.
Frame 0: splat worker 2/16 reached 32 local triangles.
Frame 0: splat worker 13/16 reached 128 local triangles.
Frame 0: splat worker 16/16 reached 128 local triangles.
Frame 0: splat worker 5/16 reached 32 local triangles.
Frame 0: splat worker 6/16 reached 64 local triangles.
Frame 0: splat worker 2/16 reached 64 local triangles.
Frame 0: splat worker 10/16 reached 256 local triangles.
Frame 0: splat worker 12/16 reached 128 local triangles.
Frame 0: splat worker 3/16 reached 128 local triangles.
Frame 0: splat worker 8/16 reached 128 local triangles.
Frame 0: splat worker 5/16 reached 64 local triangles.
Frame 0: splat worker 11/16 reached 256 local triangles.
Frame 0: splat worker 12/16 reached 256 local triangles.
Frame 0: splat worker 14/16 reached 256 local triangles.
Frame 0: splat worker 2/16 reached 128 local triangles.
Frame 0: splat worker 6/16 reached 128 local triangles.
Frame 0: splat worker 4/16 reached 256 local triangles.
Frame 0: splat worker 9/16 reached 256 local triangles.
Frame 0: splat worker 16/16 reached 256 local triangles.
Frame 0: splat worker 5/16 reached 128 local triangles.
Frame 0: splat worker 8/16 reached 256 local triangles.
Frame 0: splat worker 10/16 reached 512 local triangles.
Frame 0: splat worker 6/16 reached 256 local triangles.
Frame 0: splat worker 1/16 reached 512 local triangles.
Frame 0: splat worker 13/16 reached 256 local triangles.
Frame 0: splat worker 3/16 reached 256 local triangles.
Frame 0: splat worker 11/16 reached 512 local triangles.
Frame 0: splat worker 8/16 reached 512 local triangles.
Frame 0: splat worker 15/16 reached 256 local triangles.
Frame 0: splat worker 5/16 reached 256 local triangles.
Frame 0: splat worker 14/16 reached 512 local triangles.
Frame 0: splat worker 2/16 reached 256 local triangles.
Frame 0: splat worker 4/16 reached 512 local triangles.
Frame 0: splat worker 9/16 reached 512 local triangles.
Frame 0: splat worker 6/16 reached 512 local triangles.
Frame 0: splat worker 7/16 reached 512 local triangles.
Frame 0: splat worker 16/16 reached 512 local triangles.
Frame 0: splat worker 13/16 reached 512 local triangles.
Frame 0: splat worker 2/16 reached 512 local triangles.
Frame 0: splat worker 12/16 reached 512 local triangles.
Frame 0: splat worker 3/16 reached 512 local triangles.
Frame 0: splat worker 1/16 reached 1024 local triangles.
Frame 0: splat worker 8/16 reached 1024 local triangles.
Frame 0: splat worker 5/16 reached 512 local triangles.
Frame 0: splat worker 15/16 reached 512 local triangles.
Frame 0: splat worker 11/16 reached 1024 local triangles.
Frame 0: splat worker 4/16 reached 1024 local triangles.
Frame 0: splat worker 14/16 reached 1024 local triangles.
Frame 0: splat worker 10/16 reached 1024 local triangles.
Frame 0: splat worker 9/16 reached 1024 local triangles.
Frame 0: splat worker 13/16 reached 1024 local triangles.
Frame 0: splat worker 5/16 reached 1024 local triangles.
Frame 0: splat worker 12/16 reached 1024 local triangles.
Frame 0: splat worker 16/16 reached 1024 local triangles.
Frame 0: splat worker 3/16 reached 1024 local triangles.
Frame 0: splat worker 6/16 reached 1024 local triangles.
Frame 0: splat worker 8/16 reached 2048 local triangles.
Frame 0: splat worker 2/16 reached 1024 local triangles.
Frame 0: splat worker 7/16 reached 1024 local triangles.
Frame 0: splat worker 11/16 reached 2048 local triangles.
Frame 0: splat worker 1/16 reached 2048 local triangles.
Frame 0: splat worker 15/16 reached 1024 local triangles.
Frame 0: splat worker 10/16 reached 2048 local triangles.
Frame 0: splat worker 9/16 reached 2048 local triangles.
Frame 0: splat worker 16/16 reached 2048 local triangles.
Frame 0: splat worker 5/16 reached 2048 local triangles.
Frame 0: splat worker 4/16 reached 2048 local triangles.
Frame 0: splat worker 12/16 reached 2048 local triangles.
Frame 0: splat worker 6/16 reached 2048 local triangles.
Frame 0: splat worker 14/16 reached 2048 local triangles.
Frame 0: splat worker 2/16 reached 2048 local triangles.
Frame 0: splat worker 8/16 reached 4096 local triangles.
Frame 0: splat worker 13/16 reached 2048 local triangles.
Frame 0: splat worker 3/16 reached 2048 local triangles.
Frame 0: splat worker 15/16 reached 2048 local triangles.
Frame 0: splat worker 11/16 reached 4096 local triangles.
Frame 0: splat worker 14/16 reached 4096 local triangles.
Frame 0: splat worker 16/16 reached 4096 local triangles.
Frame 0: splat worker 7/16 reached 2048 local triangles.
Frame 0: splat worker 1/16 reached 4096 local triangles.
Frame 0: splat worker 5/16 reached 4096 local triangles.
Frame 0: splat worker 12/16 reached 4096 local triangles.
Frame 0: splat worker 10/16 reached 4096 local triangles.
Frame 0: splat worker 4/16 reached 4096 local triangles.
Frame 0: splat worker 9/16 reached 4096 local triangles.
Frame 0: splat worker 6/16 reached 4096 local triangles.
Frame 0: splat worker 8/16 reached 8192 local triangles.
Frame 0: splat worker 13/16 reached 4096 local triangles.
Frame 0: splat worker 2/16 reached 4096 local triangles.
Frame 0: splat worker 3/16 reached 4096 local triangles.
Frame 0: splat worker 15/16 reached 4096 local triangles.
Frame 0: splat worker 7/16 reached 4096 local triangles.
Frame 0: splat worker 1/16 reached 8192 local triangles.
Frame 0: splat worker 4/16 reached 8192 local triangles.
Frame 0: splat worker 11/16 reached 8192 local triangles.
Frame 0: splat worker 14/16 reached 8192 local triangles.
Frame 0: splat worker 2/16 reached 8192 local triangles.
Frame 0: splat worker 6/16 reached 8192 local triangles.
Frame 0: splat worker 12/16 finished after 8004 local triangles.
Frame 0: splat worker 7/16 finished after 5851 local triangles.
Frame 0: splat worker 2/16 finished after 8223 local triangles.
Frame 0: splat worker 8/16 finished after 12266 local triangles.
Frame 0: splat worker 3/16 finished after 7809 local triangles.
Frame 0: splat worker 15/16 finished after 6486 local triangles.
Frame 0: splat worker 5/16 finished after 8005 local triangles.
Frame 0: splat worker 14/16 finished after 8550 local triangles.
Frame 0: splat worker 4/16 finished after 8783 local triangles.
Frame 0: splat worker 16/16 finished after 7951 local triangles.
Frame 0: splat worker 13/16 finished after 7313 local triangles.
Frame 0: splat worker 1/16 finished after 8921 local triangles.
Frame 0: splat worker 11/16 finished after 8537 local triangles.
Frame 0: splat worker 9/16 finished after 8051 local triangles.
Frame 0: splat worker 6/16 finished after 8192 local triangles.
Frame 0: splat worker 10/16 finished after 7940 local triangles.
HIP producers: 16 workers; summed generation 1.336 s, submission/fallback 1.012 s; wall 0.236 s
HIP PSF accumulation: atomic 2 batches, tile16 14 batches; selector 0.000 s, binning 0.011 s
Frame 0: catalog splatting finished in 0.3 s; writing image...
Rendered 156837 images from 21087 catalog stars to /tmp/final_renderer_adaptive.png (ok; imported lens map)
PSF splats: cached 156837, cached wing-clipped 0, direct fallbacks 0, discarded below min-Y 0
HIP PSF: 156837 events in 16 batches (16 timed); upload 0.002014 s, kernel 0.118894 s, download 0.020495 s
PROCESS_WALL 1.517096041 EXIT 0
@@ -0,0 +1,222 @@
COMMAND OMP_NUM_THREADS=16 OMP_DYNAMIC=FALSE build/Release/schwarzschild_sky_hip --verbose --psf-relative-tail 1e-8 --psf-min-y 0 --max-cache-psf-flux 1e8 --all-sky-catalog /tmp/gr-hip-catalog-multi --exposure 1e13 --psf-fwhm-pixels 2.7 --psf-moffat-beta 4.5 --catalog-load-workers 4 --lens-map-input output/lens/schwarzschild_galactic_center_R100_45deg_16_4_4k_.grlens --output /tmp/final_renderer_atomic.png
TIMEOUT 60s
GIT 2d01c2c101ccea8193a64bb46ceafca3009f0ef5
BINARY_SHA256 f51cbccac135502440f005c5d61d95d6004be7d4ec5cd09bfe04bab53053143d
Blackbody LUT: 1024 CIE 1931 2-deg 1 nm-linear XYZ nodes, T=[670.146556, 101408.88] K, loaded assets/blackbody/cie1931_2deg_xyz_1024.grbblut in 0.000033 s; payload fnv1a64=0e39867b0e70a809
Blackbody backend: lut
PSF cache ready: 64x64 phases, radius 47 px, relative tail 1e-08, tail abs 1e-06, boundary 1e-07, build 0.694 s
Frame 0: finding and prefetching catalog tiles...
Catalog prefetch: 64440 requested, 3 newly loaded (21087 stars), 64437 unavailable in 0.033 s; 4 loader workers
Frame 0: catalog prefetch finished (64440 candidate tiles).
Frame 0: splatting 130882 lens triangles...
Frame 0: splat worker 5/16 started.
Frame 0: splat worker 12/16 started.
Frame 0: splat worker 5/16 reached 8 local triangles.
Frame 0: splat worker 15/16 started.
Frame 0: splat worker 8/16 started.
Frame 0: splat worker 16/16 started.
Frame 0: splat worker 7/16 started.
Frame 0: splat worker 9/16 started.
Frame 0: splat worker 1/16 started.
Frame 0: splat worker 6/16 started.
Frame 0: splat worker 13/16 started.
Frame 0: splat worker 11/16 started.
Frame 0: splat worker 4/16 started.
Frame 0: splat worker 12/16 reached 8 local triangles.
Frame 0: splat worker 5/16 reached 16 local triangles.
Frame 0: splat worker 12/16 reached 16 local triangles.
Frame 0: splat worker 14/16 started.
Frame 0: splat worker 12/16 reached 32 local triangles.
Frame 0: splat worker 15/16 reached 8 local triangles.
Frame 0: splat worker 10/16 started.
Frame 0: splat worker 8/16 reached 8 local triangles.
Frame 0: splat worker 16/16 reached 8 local triangles.
Frame 0: splat worker 8/16 reached 16 local triangles.
Frame 0: splat worker 10/16 reached 8 local triangles.
Frame 0: splat worker 16/16 reached 16 local triangles.
Frame 0: splat worker 1/16 reached 8 local triangles.
Frame 0: splat worker 6/16 reached 8 local triangles.
Frame 0: splat worker 8/16 reached 32 local triangles.
Frame 0: splat worker 13/16 reached 8 local triangles.
Frame 0: splat worker 6/16 reached 16 local triangles.
Frame 0: splat worker 3/16 started.
Frame 0: splat worker 8/16 reached 64 local triangles.
Frame 0: splat worker 6/16 reached 32 local triangles.
Frame 0: splat worker 14/16 reached 8 local triangles.
Frame 0: splat worker 15/16 reached 16 local triangles.
Frame 0: splat worker 12/16 reached 64 local triangles.
Frame 0: splat worker 7/16 reached 8 local triangles.
Frame 0: splat worker 9/16 reached 8 local triangles.
Frame 0: splat worker 15/16 reached 32 local triangles.
Frame 0: splat worker 9/16 reached 16 local triangles.
Frame 0: splat worker 1/16 reached 16 local triangles.
Frame 0: splat worker 11/16 reached 8 local triangles.
Frame 0: splat worker 9/16 reached 32 local triangles.
Frame 0: splat worker 1/16 reached 32 local triangles.
Frame 0: splat worker 11/16 reached 16 local triangles.
Frame 0: splat worker 12/16 reached 128 local triangles.
Frame 0: splat worker 5/16 reached 32 local triangles.
Frame 0: splat worker 14/16 reached 16 local triangles.
Frame 0: splat worker 11/16 reached 32 local triangles.
Frame 0: splat worker 6/16 reached 64 local triangles.
Frame 0: splat worker 7/16 reached 16 local triangles.
Frame 0: splat worker 8/16 reached 128 local triangles.
Frame 0: splat worker 16/16 reached 32 local triangles.
Frame 0: splat worker 4/16 reached 8 local triangles.
Frame 0: splat worker 13/16 reached 16 local triangles.
Frame 0: splat worker 2/16 started.
Frame 0: splat worker 3/16 reached 8 local triangles.
Frame 0: splat worker 15/16 reached 64 local triangles.
Frame 0: splat worker 9/16 reached 64 local triangles.
Frame 0: splat worker 14/16 reached 32 local triangles.
Frame 0: splat worker 3/16 reached 16 local triangles.
Frame 0: splat worker 2/16 reached 8 local triangles.
Frame 0: splat worker 7/16 reached 32 local triangles.
Frame 0: splat worker 2/16 reached 16 local triangles.
Frame 0: splat worker 16/16 reached 64 local triangles.
Frame 0: splat worker 14/16 reached 64 local triangles.
Frame 0: splat worker 2/16 reached 32 local triangles.
Frame 0: splat worker 13/16 reached 32 local triangles.
Frame 0: splat worker 3/16 reached 32 local triangles.
Frame 0: splat worker 7/16 reached 64 local triangles.
Frame 0: splat worker 9/16 reached 128 local triangles.
Frame 0: splat worker 2/16 reached 64 local triangles.
Frame 0: splat worker 4/16 reached 16 local triangles.
Frame 0: splat worker 16/16 reached 128 local triangles.
Frame 0: splat worker 4/16 reached 32 local triangles.
Frame 0: splat worker 7/16 reached 128 local triangles.
Frame 0: splat worker 4/16 reached 64 local triangles.
Frame 0: splat worker 2/16 reached 128 local triangles.
Frame 0: splat worker 5/16 reached 64 local triangles.
Frame 0: splat worker 13/16 reached 64 local triangles.
Frame 0: splat worker 1/16 reached 64 local triangles.
Frame 0: splat worker 3/16 reached 64 local triangles.
Frame 0: splat worker 11/16 reached 64 local triangles.
Frame 0: splat worker 14/16 reached 128 local triangles.
Frame 0: splat worker 4/16 reached 128 local triangles.
Frame 0: splat worker 6/16 reached 128 local triangles.
Frame 0: splat worker 7/16 reached 256 local triangles.
Frame 0: splat worker 11/16 reached 128 local triangles.
Frame 0: splat worker 10/16 reached 16 local triangles.
Frame 0: splat worker 15/16 reached 128 local triangles.
Frame 0: splat worker 10/16 reached 32 local triangles.
Frame 0: splat worker 16/16 reached 256 local triangles.
Frame 0: splat worker 5/16 reached 128 local triangles.
Frame 0: splat worker 1/16 reached 128 local triangles.
Frame 0: splat worker 13/16 reached 128 local triangles.
Frame 0: splat worker 8/16 reached 256 local triangles.
Frame 0: splat worker 2/16 reached 256 local triangles.
Frame 0: splat worker 3/16 reached 128 local triangles.
Frame 0: splat worker 14/16 reached 256 local triangles.
Frame 0: splat worker 6/16 reached 256 local triangles.
Frame 0: splat worker 4/16 reached 256 local triangles.
Frame 0: splat worker 5/16 reached 256 local triangles.
Frame 0: splat worker 10/16 reached 64 local triangles.
Frame 0: splat worker 12/16 reached 256 local triangles.
Frame 0: splat worker 7/16 reached 512 local triangles.
Frame 0: splat worker 10/16 reached 128 local triangles.
Frame 0: splat worker 11/16 reached 256 local triangles.
Frame 0: splat worker 16/16 reached 512 local triangles.
Frame 0: splat worker 1/16 reached 256 local triangles.
Frame 0: splat worker 15/16 reached 256 local triangles.
Frame 0: splat worker 10/16 reached 256 local triangles.
Frame 0: splat worker 13/16 reached 256 local triangles.
Frame 0: splat worker 3/16 reached 256 local triangles.
Frame 0: splat worker 8/16 reached 512 local triangles.
Frame 0: splat worker 9/16 reached 256 local triangles.
Frame 0: splat worker 14/16 reached 512 local triangles.
Frame 0: splat worker 6/16 reached 512 local triangles.
Frame 0: splat worker 2/16 reached 512 local triangles.
Frame 0: splat worker 13/16 reached 512 local triangles.
Frame 0: splat worker 11/16 reached 512 local triangles.
Frame 0: splat worker 12/16 reached 512 local triangles.
Frame 0: splat worker 5/16 reached 512 local triangles.
Frame 0: splat worker 1/16 reached 512 local triangles.
Frame 0: splat worker 3/16 reached 512 local triangles.
Frame 0: splat worker 4/16 reached 512 local triangles.
Frame 0: splat worker 7/16 reached 1024 local triangles.
Frame 0: splat worker 9/16 reached 512 local triangles.
Frame 0: splat worker 2/16 reached 1024 local triangles.
Frame 0: splat worker 16/16 reached 1024 local triangles.
Frame 0: splat worker 6/16 reached 1024 local triangles.
Frame 0: splat worker 14/16 reached 1024 local triangles.
Frame 0: splat worker 8/16 reached 1024 local triangles.
Frame 0: splat worker 10/16 reached 512 local triangles.
Frame 0: splat worker 5/16 reached 1024 local triangles.
Frame 0: splat worker 15/16 reached 512 local triangles.
Frame 0: splat worker 13/16 reached 1024 local triangles.
Frame 0: splat worker 11/16 reached 1024 local triangles.
Frame 0: splat worker 1/16 reached 1024 local triangles.
Frame 0: splat worker 3/16 reached 1024 local triangles.
Frame 0: splat worker 12/16 reached 1024 local triangles.
Frame 0: splat worker 7/16 reached 2048 local triangles.
Frame 0: splat worker 16/16 reached 2048 local triangles.
Frame 0: splat worker 14/16 reached 2048 local triangles.
Frame 0: splat worker 6/16 reached 2048 local triangles.
Frame 0: splat worker 8/16 reached 2048 local triangles.
Frame 0: splat worker 13/16 reached 2048 local triangles.
Frame 0: splat worker 9/16 reached 1024 local triangles.
Frame 0: splat worker 5/16 reached 2048 local triangles.
Frame 0: splat worker 3/16 reached 2048 local triangles.
Frame 0: splat worker 4/16 reached 1024 local triangles.
Frame 0: splat worker 2/16 reached 2048 local triangles.
Frame 0: splat worker 1/16 reached 2048 local triangles.
Frame 0: splat worker 12/16 reached 2048 local triangles.
Frame 0: splat worker 10/16 reached 1024 local triangles.
Frame 0: splat worker 11/16 reached 2048 local triangles.
Frame 0: splat worker 15/16 reached 1024 local triangles.
Frame 0: splat worker 15/16 reached 2048 local triangles.
Frame 0: splat worker 14/16 reached 4096 local triangles.
Frame 0: splat worker 10/16 reached 2048 local triangles.
Frame 0: splat worker 6/16 reached 4096 local triangles.
Frame 0: splat worker 7/16 reached 4096 local triangles.
Frame 0: splat worker 2/16 reached 4096 local triangles.
Frame 0: splat worker 13/16 reached 4096 local triangles.
Frame 0: splat worker 16/16 reached 4096 local triangles.
Frame 0: splat worker 9/16 reached 2048 local triangles.
Frame 0: splat worker 8/16 reached 4096 local triangles.
Frame 0: splat worker 11/16 reached 4096 local triangles.
Frame 0: splat worker 1/16 reached 4096 local triangles.
Frame 0: splat worker 3/16 reached 4096 local triangles.
Frame 0: splat worker 12/16 reached 4096 local triangles.
Frame 0: splat worker 5/16 reached 4096 local triangles.
Frame 0: splat worker 4/16 reached 2048 local triangles.
Frame 0: splat worker 15/16 reached 4096 local triangles.
Frame 0: splat worker 10/16 reached 4096 local triangles.
Frame 0: splat worker 14/16 reached 8192 local triangles.
Frame 0: splat worker 13/16 reached 8192 local triangles.
Frame 0: splat worker 9/16 reached 4096 local triangles.
Frame 0: splat worker 6/16 reached 8192 local triangles.
Frame 0: splat worker 2/16 reached 8192 local triangles.
Frame 0: splat worker 1/16 reached 8192 local triangles.
Frame 0: splat worker 7/16 reached 8192 local triangles.
Frame 0: splat worker 8/16 reached 8192 local triangles.
Frame 0: splat worker 3/16 reached 8192 local triangles.
Frame 0: splat worker 5/16 reached 8192 local triangles.
Frame 0: splat worker 11/16 reached 8192 local triangles.
Frame 0: splat worker 16/16 reached 8192 local triangles.
Frame 0: splat worker 12/16 reached 8192 local triangles.
Frame 0: splat worker 4/16 reached 4096 local triangles.
Frame 0: splat worker 3/16 finished after 8824 local triangles.
Frame 0: splat worker 13/16 finished after 9789 local triangles.
Frame 0: splat worker 11/16 finished after 8934 local triangles.
Frame 0: splat worker 1/16 finished after 9022 local triangles.
Frame 0: splat worker 12/16 finished after 8578 local triangles.
Frame 0: splat worker 15/16 finished after 5180 local triangles.
Frame 0: splat worker 4/16 finished after 4357 local triangles.
Frame 0: splat worker 8/16 finished after 8991 local triangles.
Frame 0: splat worker 6/16 finished after 9308 local triangles.
Frame 0: splat worker 5/16 finished after 8723 local triangles.
Frame 0: splat worker 16/16 finished after 8674 local triangles.
Frame 0: splat worker 10/16 finished after 6037 local triangles.
Frame 0: splat worker 9/16 finished after 6770 local triangles.
Frame 0: splat worker 14/16 finished after 9836 local triangles.
Frame 0: splat worker 2/16 finished after 9111 local triangles.
Frame 0: splat worker 7/16 finished after 8748 local triangles.
HIP producers: 16 workers; summed generation 1.452 s, submission/fallback 1.212 s; wall 0.285 s
HIP PSF accumulation: atomic 16 batches, tile16 0 batches; selector 0.000 s, binning 0.000 s
Frame 0: catalog splatting finished in 0.3 s; writing image...
Rendered 156837 images from 21087 catalog stars to /tmp/final_renderer_atomic.png (ok; imported lens map)
PSF splats: cached 156837, cached wing-clipped 0, direct fallbacks 0, discarded below min-Y 0
HIP PSF: 156837 events in 16 batches (16 timed); upload 0.000527 s, kernel 0.169212 s, download 0.024218 s
PROCESS_WALL 1.416937087 EXIT 0
@@ -0,0 +1,6 @@
HIP producers: 16 workers; summed generation 716.775 s, submission/fallback 6985.478 s; wall 481.417 s
Frame 0: catalog splatting finished in 481.5 s; writing image...
Rendered 598264924 images from 343363141 catalog stars to output/imgs/2mass_galactic_center_schwarzschild_R100_4k_1e13_beta4.5_16_4-full-gpu-new_blackbody-adaptive-redo.png (ok; imported lens map)
PSF splats: cached 598264924, cached wing-clipped 0, direct fallbacks 0, discarded below min-Y 0
HIP PSF: 598264924 events in 36530 batches (36530 timed); upload 1.432135 s, kernel 478.336515 s, download 0.021252 s
HIP_PSF_ACCUMULATION=adaptive ./build/Release/schwarzschild_sky_hip --verbose 7725.39s user 87.09s system 1461% cpu 8:54.37 total
@@ -0,0 +1,241 @@
Dummy PSF backend: --output and --hdr-output are accepted for command parity but no image files will be written.
Blackbody LUT: 1024 CIE 1931 2-deg 1 nm-linear XYZ nodes, T=[670.146556, 101408.88] K, loaded assets/blackbody/cie1931_2deg_xyz_1024.grbblut in 0.000041 s; payload fnv1a64=0e39867b0e70a809
Blackbody backend: lut
PSF cache ready: 64x64 phases, radius 47 px, relative tail 1e-08, tail abs 1e-06, boundary 1e-07, build 0.723 s
Frame 0: finding and prefetching catalog tiles...
Catalog prefetch: 64440 requested, 64440 newly loaded (343363141 stars), 0 unavailable in 49.020 s; 4 loader workers
Frame 0: catalog prefetch finished (64440 candidate tiles).
Frame 0: splatting 130882 lens triangles...
Frame 0: splat worker 1/16 started.
Frame 0: splat worker 2/16 started.
Frame 0: splat worker 3/16 started.
Frame 0: splat worker 11/16 started.
Frame 0: splat worker 4/16 started.
Frame 0: splat worker 13/16 started.
Frame 0: splat worker 5/16 started.
Frame 0: splat worker 10/16 started.
Frame 0: splat worker 8/16 started.
Frame 0: splat worker 12/16 started.
Frame 0: splat worker 6/16 started.
Frame 0: splat worker 7/16 started.
Frame 0: splat worker 14/16 started.
Frame 0: splat worker 16/16 started.
Frame 0: splat worker 15/16 started.
Frame 0: splat worker 9/16 started.
Frame 0: splat worker 3/16 reached 8 local triangles.
Frame 0: splat worker 10/16 reached 8 local triangles.
Frame 0: splat worker 13/16 reached 8 local triangles.
Frame 0: splat worker 2/16 reached 8 local triangles.
Frame 0: splat worker 8/16 reached 8 local triangles.
Frame 0: splat worker 11/16 reached 8 local triangles.
Frame 0: splat worker 5/16 reached 8 local triangles.
Frame 0: splat worker 16/16 reached 8 local triangles.
Frame 0: splat worker 14/16 reached 8 local triangles.
Frame 0: splat worker 6/16 reached 8 local triangles.
Frame 0: splat worker 4/16 reached 8 local triangles.
Frame 0: splat worker 1/16 reached 8 local triangles.
Frame 0: splat worker 7/16 reached 8 local triangles.
Frame 0: splat worker 12/16 reached 8 local triangles.
Frame 0: splat worker 3/16 reached 16 local triangles.
Frame 0: splat worker 13/16 reached 16 local triangles.
Frame 0: splat worker 15/16 reached 8 local triangles.
Frame 0: splat worker 10/16 reached 16 local triangles.
Frame 0: splat worker 16/16 reached 16 local triangles.
Frame 0: splat worker 14/16 reached 16 local triangles.
Frame 0: splat worker 8/16 reached 16 local triangles.
Frame 0: splat worker 11/16 reached 16 local triangles.
Frame 0: splat worker 1/16 reached 16 local triangles.
Frame 0: splat worker 4/16 reached 16 local triangles.
Frame 0: splat worker 2/16 reached 16 local triangles.
Frame 0: splat worker 5/16 reached 16 local triangles.
Frame 0: splat worker 7/16 reached 16 local triangles.
Frame 0: splat worker 9/16 reached 8 local triangles.
Frame 0: splat worker 12/16 reached 16 local triangles.
Frame 0: splat worker 6/16 reached 16 local triangles.
Frame 0: splat worker 3/16 reached 32 local triangles.
Frame 0: splat worker 9/16 reached 16 local triangles.
Frame 0: splat worker 13/16 reached 32 local triangles.
Frame 0: splat worker 2/16 reached 32 local triangles.
Frame 0: splat worker 14/16 reached 32 local triangles.
Frame 0: splat worker 10/16 reached 32 local triangles.
Frame 0: splat worker 8/16 reached 32 local triangles.
Frame 0: splat worker 15/16 reached 16 local triangles.
Frame 0: splat worker 4/16 reached 32 local triangles.
Frame 0: splat worker 6/16 reached 32 local triangles.
Frame 0: splat worker 16/16 reached 32 local triangles.
Frame 0: splat worker 7/16 reached 32 local triangles.
Frame 0: splat worker 5/16 reached 32 local triangles.
Frame 0: splat worker 1/16 reached 32 local triangles.
Frame 0: splat worker 12/16 reached 32 local triangles.
Frame 0: splat worker 11/16 reached 32 local triangles.
Frame 0: splat worker 3/16 reached 64 local triangles.
Frame 0: splat worker 9/16 reached 32 local triangles.
Frame 0: splat worker 13/16 reached 64 local triangles.
Frame 0: splat worker 10/16 reached 64 local triangles.
Frame 0: splat worker 8/16 reached 64 local triangles.
Frame 0: splat worker 15/16 reached 32 local triangles.
Frame 0: splat worker 5/16 reached 64 local triangles.
Frame 0: splat worker 14/16 reached 64 local triangles.
Frame 0: splat worker 16/16 reached 64 local triangles.
Frame 0: splat worker 2/16 reached 64 local triangles.
Frame 0: splat worker 6/16 reached 64 local triangles.
Frame 0: splat worker 11/16 reached 64 local triangles.
Frame 0: splat worker 1/16 reached 64 local triangles.
Frame 0: splat worker 7/16 reached 64 local triangles.
Frame 0: splat worker 12/16 reached 64 local triangles.
Frame 0: splat worker 4/16 reached 64 local triangles.
Frame 0: splat worker 9/16 reached 64 local triangles.
Frame 0: splat worker 15/16 reached 64 local triangles.
Frame 0: splat worker 3/16 reached 128 local triangles.
Frame 0: splat worker 13/16 reached 128 local triangles.
Frame 0: splat worker 5/16 reached 128 local triangles.
Frame 0: splat worker 8/16 reached 128 local triangles.
Frame 0: splat worker 1/16 reached 128 local triangles.
Frame 0: splat worker 14/16 reached 128 local triangles.
Frame 0: splat worker 2/16 reached 128 local triangles.
Frame 0: splat worker 6/16 reached 128 local triangles.
Frame 0: splat worker 10/16 reached 128 local triangles.
Frame 0: splat worker 11/16 reached 128 local triangles.
Frame 0: splat worker 7/16 reached 128 local triangles.
Frame 0: splat worker 16/16 reached 128 local triangles.
Frame 0: splat worker 4/16 reached 128 local triangles.
Frame 0: splat worker 12/16 reached 128 local triangles.
Frame 0: splat worker 9/16 reached 128 local triangles.
Frame 0: splat worker 15/16 reached 128 local triangles.
Frame 0: splat worker 3/16 reached 256 local triangles.
Frame 0: splat worker 8/16 reached 256 local triangles.
Frame 0: splat worker 1/16 reached 256 local triangles.
Frame 0: splat worker 7/16 reached 256 local triangles.
Frame 0: splat worker 2/16 reached 256 local triangles.
Frame 0: splat worker 4/16 reached 256 local triangles.
Frame 0: splat worker 13/16 reached 256 local triangles.
Frame 0: splat worker 11/16 reached 256 local triangles.
Frame 0: splat worker 10/16 reached 256 local triangles.
Frame 0: splat worker 14/16 reached 256 local triangles.
Frame 0: splat worker 15/16 reached 256 local triangles.
Frame 0: splat worker 9/16 reached 256 local triangles.
Frame 0: splat worker 16/16 reached 256 local triangles.
Frame 0: splat worker 6/16 reached 256 local triangles.
Frame 0: splat worker 12/16 reached 256 local triangles.
Frame 0: splat worker 5/16 reached 256 local triangles.
Frame 0: splat worker 4/16 reached 512 local triangles.
Frame 0: splat worker 8/16 reached 512 local triangles.
Frame 0: splat worker 11/16 reached 512 local triangles.
Frame 0: splat worker 10/16 reached 512 local triangles.
Frame 0: splat worker 6/16 reached 512 local triangles.
Frame 0: splat worker 13/16 reached 512 local triangles.
Frame 0: splat worker 3/16 reached 512 local triangles.
Frame 0: splat worker 14/16 reached 512 local triangles.
Frame 0: splat worker 7/16 reached 512 local triangles.
Frame 0: splat worker 15/16 reached 512 local triangles.
Frame 0: splat worker 9/16 reached 512 local triangles.
Frame 0: splat worker 2/16 reached 512 local triangles.
Frame 0: splat worker 16/16 reached 512 local triangles.
Frame 0: splat worker 12/16 reached 512 local triangles.
Frame 0: splat worker 1/16 reached 512 local triangles.
Frame 0: splat worker 5/16 reached 512 local triangles.
Frame 0: splat worker 6/16 reached 1024 local triangles.
Frame 0: splat worker 4/16 reached 1024 local triangles.
Frame 0: splat worker 8/16 reached 1024 local triangles.
Frame 0: splat worker 14/16 reached 1024 local triangles.
Frame 0: splat worker 11/16 reached 1024 local triangles.
Frame 0: splat worker 15/16 reached 1024 local triangles.
Frame 0: splat worker 7/16 reached 1024 local triangles.
Frame 0: splat worker 3/16 reached 1024 local triangles.
Frame 0: splat worker 1/16 reached 1024 local triangles.
Frame 0: splat worker 13/16 reached 1024 local triangles.
Frame 0: splat worker 9/16 reached 1024 local triangles.
Frame 0: splat worker 2/16 reached 1024 local triangles.
Frame 0: splat worker 12/16 reached 1024 local triangles.
Frame 0: splat worker 5/16 reached 1024 local triangles.
Frame 0: splat worker 10/16 reached 1024 local triangles.
Frame 0: splat worker 16/16 reached 1024 local triangles.
Frame 0: splat worker 6/16 reached 2048 local triangles.
Frame 0: splat worker 4/16 reached 2048 local triangles.
Frame 0: splat worker 14/16 reached 2048 local triangles.
Frame 0: splat worker 3/16 reached 2048 local triangles.
Frame 0: splat worker 13/16 reached 2048 local triangles.
Frame 0: splat worker 11/16 reached 2048 local triangles.
Frame 0: splat worker 1/16 reached 2048 local triangles.
Frame 0: splat worker 7/16 reached 2048 local triangles.
Frame 0: splat worker 8/16 reached 2048 local triangles.
Frame 0: splat worker 12/16 reached 2048 local triangles.
Frame 0: splat worker 9/16 reached 2048 local triangles.
Frame 0: splat worker 16/16 reached 2048 local triangles.
Frame 0: splat worker 10/16 reached 2048 local triangles.
Frame 0: splat worker 15/16 reached 2048 local triangles.
Frame 0: splat worker 2/16 reached 2048 local triangles.
Frame 0: splat worker 5/16 reached 2048 local triangles.
Frame 0: splat worker 4/16 reached 4096 local triangles.
Frame 0: splat worker 10/16 reached 4096 local triangles.
Frame 0: splat worker 3/16 reached 4096 local triangles.
Frame 0: splat worker 14/16 reached 4096 local triangles.
Frame 0: splat worker 16/16 reached 4096 local triangles.
Frame 0: splat worker 6/16 reached 4096 local triangles.
Frame 0: splat worker 11/16 reached 4096 local triangles.
Frame 0: splat worker 7/16 reached 4096 local triangles.
Frame 0: splat worker 9/16 reached 4096 local triangles.
Frame 0: splat worker 8/16 reached 4096 local triangles.
Frame 0: splat worker 13/16 reached 4096 local triangles.
Frame 0: splat worker 15/16 reached 4096 local triangles.
Frame 0: splat worker 1/16 reached 4096 local triangles.
Frame 0: splat worker 2/16 reached 4096 local triangles.
Frame 0: splat worker 5/16 reached 4096 local triangles.
Frame 0: splat worker 12/16 reached 4096 local triangles.
Frame 0: splat worker 4/16 reached 8192 local triangles.
Frame 0: splat worker 10/16 reached 8192 local triangles.
Frame 0: splat worker 6/16 reached 8192 local triangles.
Frame 0: splat worker 16/16 reached 8192 local triangles.
Frame 0: splat worker 14/16 reached 8192 local triangles.
Frame 0: splat worker 3/16 reached 8192 local triangles.
Frame 0: splat worker 13/16 reached 8192 local triangles.
Frame 0: splat worker 9/16 reached 8192 local triangles.
Frame 0: splat worker 9/16 finished after 8245 local triangles.
Frame 0: splat worker 5/16 finished after 7307 local triangles.
Frame 0: splat worker 3/16 finished after 8463 local triangles.
Frame 0: splat worker 13/16 finished after 8432 local triangles.
Frame 0: splat worker 1/16 finished after 7985 local triangles.
Frame 0: splat worker 16/16 finished after 8592 local triangles.
Frame 0: splat worker 15/16 finished after 7724 local triangles.
Frame 0: splat worker 10/16 finished after 8651 local triangles.
Frame 0: splat worker 6/16 finished after 8671 local triangles.
Frame 0: splat worker 7/16 finished after 7796 local triangles.
Frame 0: splat worker 12/16 finished after 7547 local triangles.
Frame 0: splat worker 11/16 finished after 8051 local triangles.
Frame 0: splat worker 4/16 finished after 8846 local triangles.
Frame 0: splat worker 2/16 finished after 7957 local triangles.
Frame 0: splat worker 8/16 finished after 8082 local triangles.
Frame 0: splat worker 14/16 finished after 8533 local triangles.
Dummy PSF diagnostic only: no HDR or image was accumulated/written.
Dummy PSF chunks: total=36524 full=36508 partial=16 events=598264924 capacity=16384 selector_tile=32px
Dummy PSF all events: min=55.000 p10=16384.000 p25=16384.000 p50=16384.000 p75=16384.000 p90=16384.000 p99=16384.000 max=16384.000
Dummy PSF all distinct_triangles: min=1.000 p10=1.000 p25=1.000 p50=2.000 p75=3.000 p90=10.000 p99=31.000 max=78.000
Dummy PSF all occupied_32px_tiles: min=1.000 p10=1.000 p25=1.000 p50=1.000 p75=2.000 p90=5.000 p99=30.000 max=56.000
Dummy PSF all event_bbox_diagonal_px: min=0.197 p10=0.745 p25=3.127 p50=12.168 p75=50.495 p90=368.217 p99=3775.614 max=3839.486
Dummy PSF all triangle_centroid_bbox_diagonal_px: min=0.000 p10=0.000 p25=0.000 p50=8.944 p75=43.719 p90=357.373 p99=3760.077 max=3824.182
Dummy PSF all maximum_successive_triangle_jump_px: min=0.000 p10=0.000 p25=0.000 p50=8.110 p75=24.000 p90=144.000 p99=3760.034 max=3818.682
Dummy PSF all adaptive criterion: 36514/36524 chunks tile16-eligible (events>=8192 and events/occupied_32px_tiles>=32)
Dummy PSF full events: min=16384.000 p10=16384.000 p25=16384.000 p50=16384.000 p75=16384.000 p90=16384.000 p99=16384.000 max=16384.000
Dummy PSF full distinct_triangles: min=1.000 p10=1.000 p25=1.000 p50=2.000 p75=3.000 p90=10.000 p99=31.000 max=78.000
Dummy PSF full occupied_32px_tiles: min=1.000 p10=1.000 p25=1.000 p50=1.000 p75=2.000 p90=5.000 p99=30.000 max=56.000
Dummy PSF full event_bbox_diagonal_px: min=0.197 p10=0.745 p25=3.125 p50=12.162 p75=50.482 p90=367.896 p99=3775.617 max=3839.486
Dummy PSF full triangle_centroid_bbox_diagonal_px: min=0.000 p10=0.000 p25=0.000 p50=8.944 p75=43.431 p90=356.134 p99=3760.077 max=3824.182
Dummy PSF full maximum_successive_triangle_jump_px: min=0.000 p10=0.000 p25=0.000 p50=8.110 p75=24.000 p90=144.000 p99=3760.034 max=3818.682
Dummy PSF full adaptive criterion: 36508/36508 chunks tile16-eligible (events>=8192 and events/occupied_32px_tiles>=32)
Dummy PSF support diagnostic: 16px rectangular cache-limited first pass only; no references were materialized or uploaded.
Dummy PSF all support_16px_references: min=1392.000 p10=688128.000 p25=715699.000 p50=746743.000 p75=786758.750 p90=802816.000 p99=802816.000 max=802816.000
Dummy PSF all support_16px_tiles: min=28.000 p10=42.000 p25=49.000 p50=49.000 p75=70.000 p90=168.000 p99=1036.000 max=1521.000
Dummy PSF all support_16px_tasks: min=28.000 p10=2688.000 p25=2808.000 p50=2975.000 p75=3136.000 p90=3136.000 p99=3435.770 max=3733.000
Dummy PSF all maximum_tile_list: min=55.000 p10=9498.000 p25=16384.000 p50=16384.000 p75=16384.000 p90=16384.000 p99=16384.000 max=16384.000
Dummy PSF all support_first_pass_ms: min=0.002 p10=0.656 p25=0.722 p50=0.807 p75=0.883 p90=0.919 p99=1.049 max=7.969
Dummy PSF all support totals: references=27216790943 tasks=107847441 summed_first_pass=29.347 s
Dummy PSF full support_16px_references: min=416864.000 p10=688128.000 p25=715825.250 p50=746748.500 p75=786772.000 p90=802816.000 p99=802816.000 max=802816.000
Dummy PSF full support_16px_tiles: min=36.000 p10=42.000 p25=49.000 p50=49.000 p75=70.000 p90=168.000 p99=1036.000 max=1521.000
Dummy PSF full support_16px_tasks: min=1851.000 p10=2688.000 p25=2809.000 p50=2975.000 p75=3136.000 p90=3136.000 p99=3435.930 max=3733.000
Dummy PSF full maximum_tile_list: min=1458.000 p10=9530.400 p25=16384.000 p50=16384.000 p75=16384.000 p90=16384.000 p99=16384.000 max=16384.000
Dummy PSF full support_first_pass_ms: min=0.458 p10=0.656 p25=0.722 p50=0.807 p75=0.883 p90=0.919 p99=1.049 max=7.969
Dummy PSF full support totals: references=27213724097 tasks=107832722 summed_first_pass=29.342 s
Dummy PSF producers: 16 workers; classification/chunk wall 81.760 s
Frame 0: catalog classification finished in 81.8 s; reporting chunk statistics...
Dummy PSF classified 598264924 images from 343363141 catalog stars; no HDR, PNG, or PPM was written.
PSF splats: cached 598264924, cached wing-clipped 0, direct fallbacks 0, discarded below min-Y 0
@@ -0,0 +1,282 @@
❯ time HIP_PSF_ACCUMULATION=adaptive ./build/Release/schwarzschild_sky_hip --verbose \
--psf-relative-tail 1e-8 \
--psf-min-y 0 \
--max-cache-psf-flux 1e8 \
--all-sky-catalog assets/2mass/processed/all_sky \
--exposure 1e13 \
--psf-fwhm-pixels 2.7 --psf-moffat-beta 4.5 \
--catalog-load-workers 4 \
--hdr-output --lens-map-input output/lens/schwarzschild_galactic_center_R100_45deg_16_4_4k_.grlens \
--output output/imgs/2mass_galactic_center_schwarzschild_R100_4k_1e13_beta4.5_16_4-full-gpu-new_blackbody-adaptive-1.png
Blackbody LUT: 1024 CIE 1931 2-deg 1 nm-linear XYZ nodes, T=[670.146556, 101408.88] K, loaded assets/blackbody/cie1931_2deg_xyz_1024.grbblut in 0.000037 s; payload fnv1a64=0e39867b0e70a809
Blackbody backend: lut
PSF cache ready: 64x64 phases, radius 47 px, relative tail 1e-08, tail abs 1e-06, boundary 1e-07, build 0.681 s
Frame 0: finding and prefetching catalog tiles...
Catalog prefetch: 64440 requested, 64440 newly loaded (343363141 stars), 0 unavailable in 49.334 s; 4 loader workers
Frame 0: catalog prefetch finished (64440 candidate tiles).
Frame 0: splatting 130882 lens triangles...
Frame 0: splat worker 1/16 started.
Frame 0: splat worker 9/16 started.
Frame 0: splat worker 12/16 started.
Frame 0: splat worker 5/16 started.
Frame 0: splat worker 16/16 started.
Frame 0: splat worker 4/16 started.
Frame 0: splat worker 8/16 started.
Frame 0: splat worker 15/16 started.
Frame 0: splat worker 3/16 started.
Frame 0: splat worker 7/16 started.
Frame 0: splat worker 2/16 started.
Frame 0: splat worker 11/16 started.
Frame 0: splat worker 10/16 started.
Frame 0: splat worker 13/16 started.
Frame 0: splat worker 6/16 started.
Frame 0: splat worker 14/16 started.
Frame 0: splat worker 11/16 reached 8 local triangles.
Frame 0: splat worker 15/16 reached 8 local triangles.
Frame 0: splat worker 3/16 reached 8 local triangles.
Frame 0: splat worker 6/16 reached 8 local triangles.
Frame 0: splat worker 12/16 reached 8 local triangles.
Frame 0: splat worker 8/16 reached 8 local triangles.
Frame 0: splat worker 13/16 reached 8 local triangles.
Frame 0: splat worker 2/16 reached 8 local triangles.
Frame 0: splat worker 1/16 reached 8 local triangles.
Frame 0: splat worker 9/16 reached 8 local triangles.
Frame 0: splat worker 7/16 reached 8 local triangles.
Frame 0: splat worker 16/16 reached 8 local triangles.
Frame 0: splat worker 5/16 reached 8 local triangles.
Frame 0: splat worker 14/16 reached 8 local triangles.
Frame 0: splat worker 10/16 reached 8 local triangles.
Frame 0: splat worker 4/16 reached 8 local triangles.
Frame 0: splat worker 3/16 reached 16 local triangles.
Frame 0: splat worker 11/16 reached 16 local triangles.
Frame 0: splat worker 15/16 reached 16 local triangles.
Frame 0: splat worker 1/16 reached 16 local triangles.
Frame 0: splat worker 8/16 reached 16 local triangles.
Frame 0: splat worker 16/16 reached 16 local triangles.
Frame 0: splat worker 7/16 reached 16 local triangles.
Frame 0: splat worker 13/16 reached 16 local triangles.
Frame 0: splat worker 12/16 reached 16 local triangles.
Frame 0: splat worker 5/16 reached 16 local triangles.
Frame 0: splat worker 6/16 reached 16 local triangles.
Frame 0: splat worker 2/16 reached 16 local triangles.
Frame 0: splat worker 10/16 reached 16 local triangles.
Frame 0: splat worker 14/16 reached 16 local triangles.
Frame 0: splat worker 9/16 reached 16 local triangles.
Frame 0: splat worker 4/16 reached 16 local triangles.
Frame 0: splat worker 3/16 reached 32 local triangles.
Frame 0: splat worker 11/16 reached 32 local triangles.
Frame 0: splat worker 3/16 reached 64 local triangles.
Frame 0: splat worker 11/16 reached 64 local triangles.
Frame 0: splat worker 13/16 reached 32 local triangles.
Frame 0: splat worker 15/16 reached 32 local triangles.
Frame 0: splat worker 16/16 reached 32 local triangles.
Frame 0: splat worker 8/16 reached 32 local triangles.
Frame 0: splat worker 1/16 reached 32 local triangles.
Frame 0: splat worker 5/16 reached 32 local triangles.
Frame 0: splat worker 12/16 reached 32 local triangles.
Frame 0: splat worker 7/16 reached 32 local triangles.
Frame 0: splat worker 2/16 reached 32 local triangles.
Frame 0: splat worker 6/16 reached 32 local triangles.
Frame 0: splat worker 10/16 reached 32 local triangles.
Frame 0: splat worker 14/16 reached 32 local triangles.
Frame 0: splat worker 9/16 reached 32 local triangles.
Frame 0: splat worker 4/16 reached 32 local triangles.
Frame 0: splat worker 13/16 reached 64 local triangles.
Frame 0: splat worker 4/16 reached 64 local triangles.
Frame 0: splat worker 3/16 reached 128 local triangles.
Frame 0: splat worker 15/16 reached 64 local triangles.
Frame 0: splat worker 10/16 reached 64 local triangles.
Frame 0: splat worker 6/16 reached 64 local triangles.
Frame 0: splat worker 9/16 reached 64 local triangles.
Frame 0: splat worker 14/16 reached 64 local triangles.
Frame 0: splat worker 11/16 reached 128 local triangles.
Frame 0: splat worker 13/16 reached 128 local triangles.
Frame 0: splat worker 16/16 reached 64 local triangles.
Frame 0: splat worker 8/16 reached 64 local triangles.
Frame 0: splat worker 1/16 reached 64 local triangles.
Frame 0: splat worker 5/16 reached 64 local triangles.
Frame 0: splat worker 12/16 reached 64 local triangles.
Frame 0: splat worker 7/16 reached 64 local triangles.
Frame 0: splat worker 2/16 reached 64 local triangles.
Frame 0: splat worker 9/16 reached 128 local triangles.
Frame 0: splat worker 4/16 reached 128 local triangles.
Frame 0: splat worker 15/16 reached 128 local triangles.
Frame 0: splat worker 14/16 reached 128 local triangles.
Frame 0: splat worker 10/16 reached 128 local triangles.
Frame 0: splat worker 6/16 reached 128 local triangles.
Frame 0: splat worker 3/16 reached 256 local triangles.
Frame 0: splat worker 8/16 reached 128 local triangles.
Frame 0: splat worker 12/16 reached 128 local triangles.
Frame 0: splat worker 7/16 reached 128 local triangles.
Frame 0: splat worker 1/16 reached 128 local triangles.
Frame 0: splat worker 11/16 reached 256 local triangles.
Frame 0: splat worker 2/16 reached 128 local triangles.
Frame 0: splat worker 16/16 reached 128 local triangles.
Frame 0: splat worker 13/16 reached 256 local triangles.
Frame 0: splat worker 5/16 reached 128 local triangles.
Frame 0: splat worker 4/16 reached 256 local triangles.
Frame 0: splat worker 9/16 reached 256 local triangles.
Frame 0: splat worker 14/16 reached 256 local triangles.
Frame 0: splat worker 12/16 reached 256 local triangles.
Frame 0: splat worker 8/16 reached 256 local triangles.
Frame 0: splat worker 7/16 reached 256 local triangles.
Frame 0: splat worker 5/16 reached 256 local triangles.
Frame 0: splat worker 10/16 reached 256 local triangles.
Frame 0: splat worker 15/16 reached 256 local triangles.
Frame 0: splat worker 2/16 reached 256 local triangles.
Frame 0: splat worker 6/16 reached 256 local triangles.
Frame 0: splat worker 1/16 reached 256 local triangles.
Frame 0: splat worker 3/16 reached 512 local triangles.
Frame 0: splat worker 16/16 reached 256 local triangles.
Frame 0: splat worker 13/16 reached 512 local triangles.
Frame 0: splat worker 4/16 reached 512 local triangles.
Frame 0: splat worker 9/16 reached 512 local triangles.
Frame 0: splat worker 11/16 reached 512 local triangles.
Frame 0: splat worker 15/16 reached 512 local triangles.
Frame 0: splat worker 8/16 reached 512 local triangles.
Frame 0: splat worker 14/16 reached 512 local triangles.
Frame 0: splat worker 2/16 reached 512 local triangles.
Frame 0: splat worker 5/16 reached 512 local triangles.
Frame 0: splat worker 7/16 reached 512 local triangles.
Frame 0: splat worker 6/16 reached 512 local triangles.
Frame 0: splat worker 12/16 reached 512 local triangles.
Frame 0: splat worker 10/16 reached 512 local triangles.
Frame 0: splat worker 1/16 reached 512 local triangles.
Frame 0: splat worker 16/16 reached 512 local triangles.
Frame 0: splat worker 3/16 reached 1024 local triangles.
Frame 0: splat worker 13/16 reached 1024 local triangles.
HIP PSF progress: 7127040 submitted / 7110656 completed events; 434 / 435 batches timed; kernel 3.811 s
Frame 0: splat worker 11/16 reached 1024 local triangles.
Frame 0: splat worker 4/16 reached 1024 local triangles.
Frame 0: splat worker 9/16 reached 1024 local triangles.
Frame 0: splat worker 8/16 reached 1024 local triangles.
Frame 0: splat worker 15/16 reached 1024 local triangles.
Frame 0: splat worker 2/16 reached 1024 local triangles.
Frame 0: splat worker 1/16 reached 1024 local triangles.
Frame 0: splat worker 5/16 reached 1024 local triangles.
Frame 0: splat worker 10/16 reached 1024 local triangles.
Frame 0: splat worker 6/16 reached 1024 local triangles.
Frame 0: splat worker 14/16 reached 1024 local triangles.
Frame 0: splat worker 7/16 reached 1024 local triangles.
Frame 0: splat worker 16/16 reached 1024 local triangles.
Frame 0: splat worker 12/16 reached 1024 local triangles.
HIP PSF progress: 17825792 submitted / 17809408 completed events; 1087 / 1088 batches timed; kernel 8.418 s
HIP PSF progress: 28704768 submitted / 28688384 completed events; 1751 / 1752 batches timed; kernel 13.045 s
HIP PSF progress: 39600128 submitted / 39583744 completed events; 2416 / 2417 batches timed; kernel 17.668 s
HIP PSF progress: 50577408 submitted / 50561024 completed events; 3086 / 3087 batches timed; kernel 22.301 s
Frame 0: splat worker 13/16 reached 2048 local triangles.
Frame 0: splat worker 3/16 reached 2048 local triangles.
Frame 0: splat worker 8/16 reached 2048 local triangles.
Frame 0: splat worker 4/16 reached 2048 local triangles.
Frame 0: splat worker 11/16 reached 2048 local triangles.
HIP PSF progress: 61554688 submitted / 61538304 completed events; 3756 / 3757 batches timed; kernel 26.939 s
Frame 0: splat worker 9/16 reached 2048 local triangles.
Frame 0: splat worker 15/16 reached 2048 local triangles.
Frame 0: splat worker 5/16 reached 2048 local triangles.
Frame 0: splat worker 2/16 reached 2048 local triangles.
Frame 0: splat worker 7/16 reached 2048 local triangles.
HIP PSF progress: 72515584 submitted / 72499200 completed events; 4425 / 4426 batches timed; kernel 31.572 s
Frame 0: splat worker 10/16 reached 2048 local triangles.
Frame 0: splat worker 6/16 reached 2048 local triangles.
Frame 0: splat worker 16/16 reached 2048 local triangles.
HIP PSF progress: 83476480 submitted / 83460096 completed events; 5094 / 5095 batches timed; kernel 36.209 s
Frame 0: splat worker 1/16 reached 2048 local triangles.
Frame 0: splat worker 14/16 reached 2048 local triangles.
Frame 0: splat worker 12/16 reached 2048 local triangles.
HIP PSF progress: 94420992 submitted / 94404608 completed events; 5762 / 5763 batches timed; kernel 40.837 s
HIP PSF progress: 105381888 submitted / 105365504 completed events; 6431 / 6432 batches timed; kernel 45.473 s
HIP PSF progress: 116326400 submitted / 116310016 completed events; 7099 / 7100 batches timed; kernel 50.099 s
HIP PSF progress: 126746624 submitted / 126730240 completed events; 7735 / 7736 batches timed; kernel 54.507 s
HIP PSF progress: 137576448 submitted / 137560064 completed events; 8396 / 8397 batches timed; kernel 59.074 s
HIP PSF progress: 148537344 submitted / 148520960 completed events; 9065 / 9066 batches timed; kernel 63.710 s
HIP PSF progress: 159170560 submitted / 159154176 completed events; 9714 / 9715 batches timed; kernel 68.165 s
HIP PSF progress: 169574400 submitted / 169558016 completed events; 10349 / 10350 batches timed; kernel 72.587 s
HIP PSF progress: 180568064 submitted / 180551680 completed events; 11020 / 11021 batches timed; kernel 77.194 s
HIP PSF progress: 191463424 submitted / 191447040 completed events; 11685 / 11686 batches timed; kernel 81.733 s
HIP PSF progress: 202309632 submitted / 202293248 completed events; 12347 / 12348 batches timed; kernel 86.280 s
HIP PSF progress: 213155840 submitted / 213139456 completed events; 13009 / 13010 batches timed; kernel 90.845 s
HIP PSF progress: 223952896 submitted / 223936512 completed events; 13668 / 13669 batches timed; kernel 95.418 s
HIP PSF progress: 234635264 submitted / 234618880 completed events; 14320 / 14321 batches timed; kernel 99.965 s
HIP PSF progress: 245415936 submitted / 245399552 completed events; 14978 / 14979 batches timed; kernel 104.510 s
HIP PSF progress: 256147456 submitted / 256131072 completed events; 15633 / 15634 batches timed; kernel 109.022 s
HIP PSF progress: 266829824 submitted / 266813440 completed events; 16285 / 16286 batches timed; kernel 113.501 s
HIP PSF progress: 277528576 submitted / 277512192 completed events; 16938 / 16939 batches timed; kernel 118.012 s
Frame 0: splat worker 13/16 reached 4096 local triangles.
HIP PSF progress: 288161792 submitted / 288145408 completed events; 17587 / 17588 batches timed; kernel 122.500 s
HIP PSF progress: 298795008 submitted / 298778624 completed events; 18236 / 18237 batches timed; kernel 127.047 s
Frame 0: splat worker 3/16 reached 4096 local triangles.
Frame 0: splat worker 9/16 reached 4096 local triangles.
Frame 0: splat worker 15/16 reached 4096 local triangles.
Frame 0: splat worker 7/16 reached 4096 local triangles.
Frame 0: splat worker 8/16 reached 4096 local triangles.
Frame 0: splat worker 16/16 reached 4096 local triangles.
HIP PSF progress: 309673984 submitted / 309657600 completed events; 18900 / 18901 batches timed; kernel 131.610 s
Frame 0: splat worker 11/16 reached 4096 local triangles.
Frame 0: splat worker 5/16 reached 4096 local triangles.
Frame 0: splat worker 1/16 reached 4096 local triangles.
Frame 0: splat worker 4/16 reached 4096 local triangles.
Frame 0: splat worker 6/16 reached 4096 local triangles.
HIP PSF progress: 319291392 submitted / 319275008 completed events; 19487 / 19488 batches timed; kernel 135.996 s
Frame 0: splat worker 10/16 reached 4096 local triangles.
Frame 0: splat worker 14/16 reached 4096 local triangles.
Frame 0: splat worker 2/16 reached 4096 local triangles.
HIP PSF progress: 330072064 submitted / 330055680 completed events; 20145 / 20146 batches timed; kernel 140.558 s
Frame 0: splat worker 12/16 reached 4096 local triangles.
HIP PSF progress: 340770816 submitted / 340754432 completed events; 20798 / 20799 batches timed; kernel 145.107 s
HIP PSF progress: 351518720 submitted / 351502336 completed events; 21454 / 21455 batches timed; kernel 149.662 s
HIP PSF progress: 362348544 submitted / 362332160 completed events; 22115 / 22116 batches timed; kernel 154.205 s
HIP PSF progress: 373129216 submitted / 373112832 completed events; 22773 / 22774 batches timed; kernel 158.775 s
HIP PSF progress: 383877120 submitted / 383860736 completed events; 23429 / 23430 batches timed; kernel 163.320 s
HIP PSF progress: 394706944 submitted / 394690560 completed events; 24090 / 24091 batches timed; kernel 167.916 s
HIP PSF progress: 405553152 submitted / 405536768 completed events; 24752 / 24753 batches timed; kernel 172.495 s
HIP PSF progress: 416399360 submitted / 416382976 completed events; 25414 / 25415 batches timed; kernel 177.045 s
HIP PSF progress: 427311104 submitted / 427294720 completed events; 26080 / 26081 batches timed; kernel 181.596 s
HIP PSF progress: 438222848 submitted / 438206464 completed events; 26746 / 26747 batches timed; kernel 186.222 s
HIP PSF progress: 448446464 submitted / 448430080 completed events; 27370 / 27371 batches timed; kernel 190.548 s
HIP PSF progress: 459243520 submitted / 459227136 completed events; 28029 / 28030 batches timed; kernel 195.105 s
HIP PSF progress: 470171648 submitted / 470155264 completed events; 28696 / 28697 batches timed; kernel 199.739 s
HIP PSF progress: 478691328 submitted / 478674944 completed events; 29216 / 29217 batches timed; kernel 203.895 s
HIP PSF progress: 486948864 submitted / 486932480 completed events; 29720 / 29721 batches timed; kernel 208.173 s
HIP PSF progress: 497876992 submitted / 497860608 completed events; 30387 / 30388 batches timed; kernel 212.796 s
HIP PSF progress: 508837888 submitted / 508821504 completed events; 31056 / 31057 batches timed; kernel 217.441 s
HIP PSF progress: 519766016 submitted / 519749632 completed events; 31723 / 31724 batches timed; kernel 222.075 s
HIP PSF progress: 530710528 submitted / 530694144 completed events; 32391 / 32392 batches timed; kernel 226.711 s
HIP PSF progress: 541687808 submitted / 541671424 completed events; 33061 / 33062 batches timed; kernel 231.345 s
HIP PSF progress: 552648704 submitted / 552632320 completed events; 33730 / 33731 batches timed; kernel 235.981 s
HIP PSF progress: 563576832 submitted / 563560448 completed events; 34397 / 34398 batches timed; kernel 240.606 s
HIP PSF progress: 574472192 submitted / 574455808 completed events; 35062 / 35063 batches timed; kernel 245.237 s
HIP PSF progress: 585203712 submitted / 585187328 completed events; 35717 / 35718 batches timed; kernel 249.861 s
Frame 0: splat worker 13/16 reached 8192 local triangles.
HIP PSF progress: 595640320 submitted / 595623936 completed events; 36354 / 36355 batches timed; kernel 254.473 s
Frame 0: splat worker 4/16 reached 8192 local triangles.
Frame 0: splat worker 15/16 reached 8192 local triangles.
Frame 0: splat worker 3/16 reached 8192 local triangles.
Frame 0: splat worker 8/16 reached 8192 local triangles.
Frame 0: splat worker 11/16 reached 8192 local triangles.
Frame 0: splat worker 9/16 reached 8192 local triangles.
Frame 0: splat worker 16/16 reached 8192 local triangles.
Frame 0: splat worker 5/16 reached 8192 local triangles.
Frame 0: splat worker 7/16 finished after 8039 local triangles.
Frame 0: splat worker 5/16 finished after 8230 local triangles.
Frame 0: splat worker 2/16 finished after 7923 local triangles.
Frame 0: splat worker 8/16 finished after 8251 local triangles.
Frame 0: splat worker 10/16 finished after 7775 local triangles.
Frame 0: splat worker 1/16 finished after 7988 local triangles.
Frame 0: splat worker 11/16 finished after 8351 local triangles.
Frame 0: splat worker 4/16 finished after 8560 local triangles.
Frame 0: splat worker 13/16 finished after 8976 local triangles.
Frame 0: splat worker 9/16 finished after 8289 local triangles.
Frame 0: splat worker 14/16 finished after 8119 local triangles.
Frame 0: splat worker 12/16 finished after 7415 local triangles.
Frame 0: splat worker 15/16 finished after 8339 local triangles.
Frame 0: splat worker 16/16 finished after 8279 local triangles.
Frame 0: splat worker 3/16 finished after 8369 local triangles.
Frame 0: splat worker 6/16 finished after 7979 local triangles.
HIP producers: 16 workers; summed generation 814.275 s, submission/fallback 3712.364 s; wall 282.944 s
HIP PSF accumulation: atomic 15 batches, tile16 36515 batches; selector 2.484 s, binning 134.374 s
HIP PSF tile workload: references 27216530468, tasks 107238420, merges 2802462; peak references/chunk 802816
Frame 0: catalog splatting finished in 283.0 s; writing image...
Rendered 598264924 images from 343363141 catalog stars to output/imgs/2mass_galactic_center_schwarzschild_R100_4k_1e13_beta4.5_16_4-full-gpu-new_blackbody-adaptive-1.png (ok; imported lens map)
PSF splats: cached 598264924, cached wing-clipped 0, direct fallbacks 0, discarded below min-Y 0
HIP PSF: 598264924 events in 36530 batches (36530 timed); upload 7.184765 s, kernel 256.184375 s, download 0.023827 s
HIP_PSF_ACCUMULATION=adaptive ./build/Release/schwarzschild_sky_hip --verbose 4605.61s user 47.21s system 1385% cpu 5:35.75 total
@@ -0,0 +1,340 @@
❯ time HIP_PSF_ACCUMULATION=adaptive ./build/Release/schwarzschild_sky_hip --verbose \
--psf-relative-tail 1e-8 \
--psf-min-y 0 \
--max-cache-psf-flux 1e8 \
--all-sky-catalog assets/2mass/processed/all_sky \
--exposure 1e13 \
--psf-fwhm-pixels 2.7 --psf-moffat-beta 4.5 \
--catalog-load-workers 4 \
--hdr-output --lens-map-input output/lens/schwarzschild_galactic_center_R100_45deg_16_4_4k_.grlens \
--output output/imgs/2mass_galactic_center_schwarzschild_R100_4k_1e13_beta4.5_16_4-full-gpu-new_blackbody-adaptive.png
Blackbody LUT: 1024 CIE 1931 2-deg 1 nm-linear XYZ nodes, T=[670.146556, 101408.88] K, loaded assets/blackbody/cie1931_2deg_xyz_1024.grbblut in 0.000033 s; payload fnv1a64=0e39867b0e70a809
Blackbody backend: lut
PSF cache ready: 64x64 phases, radius 47 px, relative tail 1e-08, tail abs 1e-06, boundary 1e-07, build 0.658 s
Frame 0: finding and prefetching catalog tiles...
Catalog prefetch: 64440 requested, 64440 newly loaded (343363141 stars), 0 unavailable in 50.104 s; 4 loader workers
Frame 0: catalog prefetch finished (64440 candidate tiles).
Frame 0: splatting 130882 lens triangles...
Frame 0: splat worker 1/16 started.
Frame 0: splat worker 16/16 started.
Frame 0: splat worker 3/16 started.
Frame 0: splat worker 2/16 started.
Frame 0: splat worker 5/16 started.
Frame 0: splat worker 12/16 started.
Frame 0: splat worker 7/16 started.
Frame 0: splat worker 11/16 started.
Frame 0: splat worker 6/16 started.
Frame 0: splat worker 9/16 started.
Frame 0: splat worker 8/16 started.
Frame 0: splat worker 14/16 started.
Frame 0: splat worker 4/16 started.
Frame 0: splat worker 10/16 started.
Frame 0: splat worker 13/16 started.
Frame 0: splat worker 15/16 started.
Frame 0: splat worker 2/16 reached 8 local triangles.
Frame 0: splat worker 8/16 reached 8 local triangles.
Frame 0: splat worker 12/16 reached 8 local triangles.
Frame 0: splat worker 11/16 reached 8 local triangles.
Frame 0: splat worker 7/16 reached 8 local triangles.
Frame 0: splat worker 14/16 reached 8 local triangles.
Frame 0: splat worker 16/16 reached 8 local triangles.
Frame 0: splat worker 6/16 reached 8 local triangles.
Frame 0: splat worker 4/16 reached 8 local triangles.
Frame 0: splat worker 3/16 reached 8 local triangles.
Frame 0: splat worker 9/16 reached 8 local triangles.
Frame 0: splat worker 1/16 reached 8 local triangles.
Frame 0: splat worker 5/16 reached 8 local triangles.
Frame 0: splat worker 2/16 reached 16 local triangles.
Frame 0: splat worker 13/16 reached 8 local triangles.
Frame 0: splat worker 8/16 reached 16 local triangles.
Frame 0: splat worker 4/16 reached 16 local triangles.
Frame 0: splat worker 16/16 reached 16 local triangles.
Frame 0: splat worker 12/16 reached 16 local triangles.
Frame 0: splat worker 14/16 reached 16 local triangles.
Frame 0: splat worker 3/16 reached 16 local triangles.
Frame 0: splat worker 15/16 reached 8 local triangles.
Frame 0: splat worker 7/16 reached 16 local triangles.
Frame 0: splat worker 1/16 reached 16 local triangles.
Frame 0: splat worker 11/16 reached 16 local triangles.
Frame 0: splat worker 9/16 reached 16 local triangles.
Frame 0: splat worker 6/16 reached 16 local triangles.
Frame 0: splat worker 5/16 reached 16 local triangles.
Frame 0: splat worker 10/16 reached 8 local triangles.
Frame 0: splat worker 13/16 reached 16 local triangles.
Frame 0: splat worker 2/16 reached 32 local triangles.
Frame 0: splat worker 8/16 reached 32 local triangles.
Frame 0: splat worker 10/16 reached 16 local triangles.
Frame 0: splat worker 15/16 reached 16 local triangles.
Frame 0: splat worker 16/16 reached 32 local triangles.
Frame 0: splat worker 15/16 reached 32 local triangles.
Frame 0: splat worker 8/16 reached 64 local triangles.
Frame 0: splat worker 10/16 reached 32 local triangles.
Frame 0: splat worker 4/16 reached 32 local triangles.
Frame 0: splat worker 7/16 reached 32 local triangles.
Frame 0: splat worker 1/16 reached 32 local triangles.
Frame 0: splat worker 14/16 reached 32 local triangles.
Frame 0: splat worker 3/16 reached 32 local triangles.
Frame 0: splat worker 11/16 reached 32 local triangles.
Frame 0: splat worker 6/16 reached 32 local triangles.
Frame 0: splat worker 5/16 reached 32 local triangles.
Frame 0: splat worker 12/16 reached 32 local triangles.
Frame 0: splat worker 9/16 reached 32 local triangles.
Frame 0: splat worker 2/16 reached 64 local triangles.
Frame 0: splat worker 13/16 reached 32 local triangles.
Frame 0: splat worker 16/16 reached 64 local triangles.
Frame 0: splat worker 15/16 reached 64 local triangles.
Frame 0: splat worker 10/16 reached 64 local triangles.
Frame 0: splat worker 4/16 reached 64 local triangles.
Frame 0: splat worker 9/16 reached 64 local triangles.
Frame 0: splat worker 12/16 reached 64 local triangles.
Frame 0: splat worker 13/16 reached 64 local triangles.
Frame 0: splat worker 8/16 reached 128 local triangles.
Frame 0: splat worker 2/16 reached 128 local triangles.
Frame 0: splat worker 16/16 reached 128 local triangles.
Frame 0: splat worker 10/16 reached 128 local triangles.
Frame 0: splat worker 7/16 reached 64 local triangles.
Frame 0: splat worker 1/16 reached 64 local triangles.
Frame 0: splat worker 14/16 reached 64 local triangles.
Frame 0: splat worker 3/16 reached 64 local triangles.
Frame 0: splat worker 11/16 reached 64 local triangles.
Frame 0: splat worker 6/16 reached 64 local triangles.
Frame 0: splat worker 5/16 reached 64 local triangles.
Frame 0: splat worker 13/16 reached 128 local triangles.
Frame 0: splat worker 15/16 reached 128 local triangles.
Frame 0: splat worker 4/16 reached 128 local triangles.
Frame 0: splat worker 9/16 reached 128 local triangles.
Frame 0: splat worker 16/16 reached 256 local triangles.
Frame 0: splat worker 12/16 reached 128 local triangles.
Frame 0: splat worker 1/16 reached 128 local triangles.
Frame 0: splat worker 11/16 reached 128 local triangles.
Frame 0: splat worker 14/16 reached 128 local triangles.
Frame 0: splat worker 2/16 reached 256 local triangles.
Frame 0: splat worker 15/16 reached 256 local triangles.
Frame 0: splat worker 6/16 reached 128 local triangles.
Frame 0: splat worker 8/16 reached 256 local triangles.
Frame 0: splat worker 5/16 reached 128 local triangles.
Frame 0: splat worker 7/16 reached 128 local triangles.
Frame 0: splat worker 3/16 reached 128 local triangles.
Frame 0: splat worker 10/16 reached 256 local triangles.
Frame 0: splat worker 13/16 reached 256 local triangles.
Frame 0: splat worker 4/16 reached 256 local triangles.
Frame 0: splat worker 1/16 reached 256 local triangles.
Frame 0: splat worker 9/16 reached 256 local triangles.
Frame 0: splat worker 5/16 reached 256 local triangles.
Frame 0: splat worker 14/16 reached 256 local triangles.
Frame 0: splat worker 11/16 reached 256 local triangles.
Frame 0: splat worker 6/16 reached 256 local triangles.
Frame 0: splat worker 3/16 reached 256 local triangles.
Frame 0: splat worker 7/16 reached 256 local triangles.
Frame 0: splat worker 12/16 reached 256 local triangles.
Frame 0: splat worker 2/16 reached 512 local triangles.
Frame 0: splat worker 16/16 reached 512 local triangles.
Frame 0: splat worker 8/16 reached 512 local triangles.
Frame 0: splat worker 4/16 reached 512 local triangles.
Frame 0: splat worker 10/16 reached 512 local triangles.
Frame 0: splat worker 1/16 reached 512 local triangles.
Frame 0: splat worker 9/16 reached 512 local triangles.
Frame 0: splat worker 11/16 reached 512 local triangles.
Frame 0: splat worker 14/16 reached 512 local triangles.
Frame 0: splat worker 15/16 reached 512 local triangles.
Frame 0: splat worker 12/16 reached 512 local triangles.
Frame 0: splat worker 3/16 reached 512 local triangles.
Frame 0: splat worker 6/16 reached 512 local triangles.
Frame 0: splat worker 13/16 reached 512 local triangles.
Frame 0: splat worker 7/16 reached 512 local triangles.
Frame 0: splat worker 5/16 reached 512 local triangles.
HIP PSF progress: 5488640 submitted / 5472256 completed events; 334 / 335 batches timed; kernel 3.536 s
Frame 0: splat worker 2/16 reached 1024 local triangles.
Frame 0: splat worker 16/16 reached 1024 local triangles.
Frame 0: splat worker 1/16 reached 1024 local triangles.
Frame 0: splat worker 8/16 reached 1024 local triangles.
Frame 0: splat worker 4/16 reached 1024 local triangles.
Frame 0: splat worker 10/16 reached 1024 local triangles.
Frame 0: splat worker 13/16 reached 1024 local triangles.
Frame 0: splat worker 9/16 reached 1024 local triangles.
Frame 0: splat worker 11/16 reached 1024 local triangles.
Frame 0: splat worker 14/16 reached 1024 local triangles.
Frame 0: splat worker 6/16 reached 1024 local triangles.
Frame 0: splat worker 3/16 reached 1024 local triangles.
Frame 0: splat worker 12/16 reached 1024 local triangles.
Frame 0: splat worker 15/16 reached 1024 local triangles.
Frame 0: splat worker 7/16 reached 1024 local triangles.
HIP PSF progress: 14532608 submitted / 14516224 completed events; 886 / 887 batches timed; kernel 7.626 s
Frame 0: splat worker 5/16 reached 1024 local triangles.
HIP PSF progress: 23953408 submitted / 23937024 completed events; 1461 / 1462 batches timed; kernel 11.680 s
HIP PSF progress: 33390592 submitted / 33374208 completed events; 2037 / 2038 batches timed; kernel 15.735 s
HIP PSF progress: 42713088 submitted / 42696704 completed events; 2606 / 2607 batches timed; kernel 19.779 s
HIP PSF progress: 51101696 submitted / 51085312 completed events; 3118 / 3119 batches timed; kernel 23.818 s
Frame 0: splat worker 16/16 reached 2048 local triangles.
Frame 0: splat worker 2/16 reached 2048 local triangles.
Frame 0: splat worker 8/16 reached 2048 local triangles.
HIP PSF progress: 58884096 submitted / 58867712 completed events; 3593 / 3594 batches timed; kernel 27.859 s
Frame 0: splat worker 9/16 reached 2048 local triangles.
Frame 0: splat worker 1/16 reached 2048 local triangles.
Frame 0: splat worker 13/16 reached 2048 local triangles.
HIP PSF progress: 65880064 submitted / 65863680 completed events; 4020 / 4021 batches timed; kernel 31.896 s
Frame 0: splat worker 3/16 reached 2048 local triangles.
Frame 0: splat worker 4/16 reached 2048 local triangles.
Frame 0: splat worker 14/16 reached 2048 local triangles.
Frame 0: splat worker 10/16 reached 2048 local triangles.
HIP PSF progress: 72499200 submitted / 72482816 completed events; 4424 / 4425 batches timed; kernel 35.993 s
Frame 0: splat worker 11/16 reached 2048 local triangles.
HIP PSF progress: 77742080 submitted / 77725696 completed events; 4744 / 4745 batches timed; kernel 40.005 s
Frame 0: splat worker 6/16 reached 2048 local triangles.
Frame 0: splat worker 7/16 reached 2048 local triangles.
HIP PSF progress: 83722240 submitted / 83705856 completed events; 5109 / 5110 batches timed; kernel 43.921 s
Frame 0: splat worker 15/16 reached 2048 local triangles.
HIP PSF progress: 88948736 submitted / 88932352 completed events; 5428 / 5429 batches timed; kernel 47.958 s
Frame 0: splat worker 12/16 reached 2048 local triangles.
Frame 0: splat worker 5/16 reached 2048 local triangles.
HIP PSF progress: 94879744 submitted / 94863360 completed events; 5790 / 5791 batches timed; kernel 51.749 s
HIP PSF progress: 99696640 submitted / 99680256 completed events; 6084 / 6085 batches timed; kernel 55.468 s
HIP PSF progress: 105644032 submitted / 105627648 completed events; 6447 / 6448 batches timed; kernel 59.617 s
HIP PSF progress: 110559232 submitted / 110542848 completed events; 6747 / 6748 batches timed; kernel 63.200 s
HIP PSF progress: 115113984 submitted / 115097600 completed events; 7025 / 7026 batches timed; kernel 66.735 s
HIP PSF progress: 119373824 submitted / 119357440 completed events; 7285 / 7286 batches timed; kernel 70.044 s
HIP PSF progress: 123502592 submitted / 123486208 completed events; 7537 / 7538 batches timed; kernel 73.265 s
HIP PSF progress: 127565824 submitted / 127549440 completed events; 7785 / 7786 batches timed; kernel 76.421 s
HIP PSF progress: 131727360 submitted / 131710976 completed events; 8039 / 8040 batches timed; kernel 79.645 s
HIP PSF progress: 135970816 submitted / 135954432 completed events; 8298 / 8299 batches timed; kernel 82.956 s
HIP PSF progress: 141410304 submitted / 141393920 completed events; 8630 / 8631 batches timed; kernel 86.993 s
HIP PSF progress: 145866752 submitted / 145850368 completed events; 8902 / 8903 batches timed; kernel 90.440 s
HIP PSF progress: 150093824 submitted / 150077440 completed events; 9160 / 9161 batches timed; kernel 93.736 s
HIP PSF progress: 154189824 submitted / 154173440 completed events; 9410 / 9411 batches timed; kernel 96.882 s
HIP PSF progress: 158187520 submitted / 158171136 completed events; 9654 / 9655 batches timed; kernel 99.980 s
HIP PSF progress: 162283520 submitted / 162267136 completed events; 9904 / 9905 batches timed; kernel 103.149 s
HIP PSF progress: 166674432 submitted / 166658048 completed events; 10172 / 10173 batches timed; kernel 106.533 s
HIP PSF progress: 171786240 submitted / 171769856 completed events; 10484 / 10485 batches timed; kernel 110.449 s
HIP PSF progress: 176046080 submitted / 176029696 completed events; 10744 / 10745 batches timed; kernel 113.735 s
HIP PSF progress: 180158464 submitted / 180142080 completed events; 10995 / 10996 batches timed; kernel 116.880 s
HIP PSF progress: 184123392 submitted / 184107008 completed events; 11237 / 11238 batches timed; kernel 119.895 s
HIP PSF progress: 188071936 submitted / 188055552 completed events; 11478 / 11479 batches timed; kernel 122.933 s
HIP PSF progress: 191971328 submitted / 191954944 completed events; 11716 / 11717 batches timed; kernel 125.961 s
HIP PSF progress: 196034560 submitted / 196018176 completed events; 11964 / 11965 batches timed; kernel 129.077 s
HIP PSF progress: 201048064 submitted / 201031680 completed events; 12270 / 12271 batches timed; kernel 132.924 s
HIP PSF progress: 205406208 submitted / 205389824 completed events; 12536 / 12537 batches timed; kernel 136.305 s
HIP PSF progress: 209305600 submitted / 209289216 completed events; 12774 / 12775 batches timed; kernel 139.365 s
HIP PSF progress: 213352448 submitted / 213336064 completed events; 13021 / 13022 batches timed; kernel 142.444 s
HIP PSF progress: 217219072 submitted / 217202688 completed events; 13257 / 13258 batches timed; kernel 145.457 s
HIP PSF progress: 221315072 submitted / 221298688 completed events; 13507 / 13508 batches timed; kernel 148.650 s
HIP PSF progress: 226328576 submitted / 226312192 completed events; 13813 / 13814 batches timed; kernel 152.526 s
HIP PSF progress: 230309888 submitted / 230293504 completed events; 14056 / 14057 batches timed; kernel 155.654 s
HIP PSF progress: 234242048 submitted / 234225664 completed events; 14296 / 14297 batches timed; kernel 158.711 s
HIP PSF progress: 238354432 submitted / 238338048 completed events; 14547 / 14548 batches timed; kernel 161.848 s
HIP PSF progress: 243187712 submitted / 243171328 completed events; 14842 / 14843 batches timed; kernel 165.567 s
HIP PSF progress: 247332864 submitted / 247316480 completed events; 15095 / 15096 batches timed; kernel 168.797 s
HIP PSF progress: 251428864 submitted / 251412480 completed events; 15345 / 15346 batches timed; kernel 171.925 s
HIP PSF progress: 256360448 submitted / 256344064 completed events; 15646 / 15647 batches timed; kernel 175.733 s
HIP PSF progress: 260538368 submitted / 260521984 completed events; 15901 / 15902 batches timed; kernel 178.920 s
HIP PSF progress: 265469952 submitted / 265453568 completed events; 16202 / 16203 batches timed; kernel 182.713 s
HIP PSF progress: 269729792 submitted / 269713408 completed events; 16462 / 16463 batches timed; kernel 185.992 s
HIP PSF progress: 274464768 submitted / 274448384 completed events; 16751 / 16752 batches timed; kernel 189.605 s
HIP PSF progress: 279396352 submitted / 279379968 completed events; 17052 / 17053 batches timed; kernel 193.361 s
HIP PSF progress: 284114944 submitted / 284098560 completed events; 17340 / 17341 batches timed; kernel 196.988 s
HIP PSF progress: 288849920 submitted / 288833536 completed events; 17629 / 17630 batches timed; kernel 200.613 s
HIP PSF progress: 293175296 submitted / 293158912 completed events; 17893 / 17894 batches timed; kernel 203.955 s
Frame 0: splat worker 2/16 reached 4096 local triangles.
HIP PSF progress: 297910272 submitted / 297893888 completed events; 18182 / 18183 batches timed; kernel 207.612 s
Frame 0: splat worker 16/16 reached 4096 local triangles.
Frame 0: splat worker 8/16 reached 4096 local triangles.
Frame 0: splat worker 14/16 reached 4096 local triangles.
HIP PSF progress: 302792704 submitted / 302776320 completed events; 18480 / 18481 batches timed; kernel 211.344 s
Frame 0: splat worker 9/16 reached 4096 local triangles.
Frame 0: splat worker 13/16 reached 4096 local triangles.
HIP PSF progress: 307904512 submitted / 307888128 completed events; 18792 / 18793 batches timed; kernel 215.163 s
Frame 0: splat worker 4/16 reached 4096 local triangles.
Frame 0: splat worker 3/16 reached 4096 local triangles.
HIP PSF progress: 312672256 submitted / 312655872 completed events; 19083 / 19084 batches timed; kernel 218.749 s
Frame 0: splat worker 6/16 reached 4096 local triangles.
Frame 0: splat worker 11/16 reached 4096 local triangles.
Frame 0: splat worker 10/16 reached 4096 local triangles.
HIP PSF progress: 317734912 submitted / 317718528 completed events; 19392 / 19393 batches timed; kernel 222.456 s
HIP PSF progress: 322797568 submitted / 322781184 completed events; 19701 / 19702 batches timed; kernel 226.261 s
Frame 0: splat worker 12/16 reached 4096 local triangles.
Frame 0: splat worker 7/16 reached 4096 local triangles.
HIP PSF progress: 327958528 submitted / 327942144 completed events; 20016 / 20017 batches timed; kernel 230.123 s
Frame 0: splat worker 15/16 reached 4096 local triangles.
Frame 0: splat worker 1/16 reached 4096 local triangles.
Frame 0: splat worker 5/16 reached 4096 local triangles.
HIP PSF progress: 332627968 submitted / 332611584 completed events; 20301 / 20302 batches timed; kernel 233.769 s
HIP PSF progress: 337592320 submitted / 337575936 completed events; 20604 / 20605 batches timed; kernel 237.600 s
HIP PSF progress: 342589440 submitted / 342573056 completed events; 20909 / 20910 batches timed; kernel 241.332 s
HIP PSF progress: 347439104 submitted / 347422720 completed events; 21205 / 21206 batches timed; kernel 245.038 s
HIP PSF progress: 352616448 submitted / 352600064 completed events; 21521 / 21522 batches timed; kernel 248.793 s
HIP PSF progress: 357597184 submitted / 357580800 completed events; 21825 / 21826 batches timed; kernel 252.610 s
HIP PSF progress: 361873408 submitted / 361857024 completed events; 22086 / 22087 batches timed; kernel 255.894 s
HIP PSF progress: 367230976 submitted / 367214592 completed events; 22413 / 22414 batches timed; kernel 259.759 s
HIP PSF progress: 371359744 submitted / 371343360 completed events; 22665 / 22666 batches timed; kernel 262.989 s
HIP PSF progress: 376832000 submitted / 376815616 completed events; 22999 / 23000 batches timed; kernel 266.901 s
HIP PSF progress: 380895232 submitted / 380878848 completed events; 23247 / 23248 batches timed; kernel 270.019 s
HIP PSF progress: 385040384 submitted / 385024000 completed events; 23500 / 23501 batches timed; kernel 273.287 s
HIP PSF progress: 390512640 submitted / 390496256 completed events; 23834 / 23835 batches timed; kernel 277.239 s
HIP PSF progress: 394461184 submitted / 394444800 completed events; 24075 / 24076 batches timed; kernel 280.335 s
HIP PSF progress: 398491648 submitted / 398475264 completed events; 24321 / 24322 batches timed; kernel 283.405 s
HIP PSF progress: 402472960 submitted / 402456576 completed events; 24564 / 24565 batches timed; kernel 286.553 s
HIP PSF progress: 407371776 submitted / 407355392 completed events; 24863 / 24864 batches timed; kernel 290.342 s
HIP PSF progress: 412385280 submitted / 412368896 completed events; 25169 / 25170 batches timed; kernel 293.856 s
HIP PSF progress: 416382976 submitted / 416366592 completed events; 25413 / 25414 batches timed; kernel 296.916 s
HIP PSF progress: 420347904 submitted / 420331520 completed events; 25655 / 25656 batches timed; kernel 299.962 s
HIP PSF progress: 424361984 submitted / 424345600 completed events; 25900 / 25901 batches timed; kernel 303.022 s
HIP PSF progress: 428457984 submitted / 428441600 completed events; 26150 / 26151 batches timed; kernel 306.182 s
HIP PSF progress: 432865280 submitted / 432848896 completed events; 26419 / 26420 batches timed; kernel 309.597 s
HIP PSF progress: 438550528 submitted / 438534144 completed events; 26766 / 26767 batches timed; kernel 313.590 s
HIP PSF progress: 442826752 submitted / 442810368 completed events; 27027 / 27028 batches timed; kernel 316.861 s
HIP PSF progress: 446857216 submitted / 446840832 completed events; 27273 / 27274 batches timed; kernel 319.966 s
HIP PSF progress: 450920448 submitted / 450904064 completed events; 27521 / 27522 batches timed; kernel 323.082 s
HIP PSF progress: 455032832 submitted / 455016448 completed events; 27772 / 27773 batches timed; kernel 326.276 s
HIP PSF progress: 459358208 submitted / 459341824 completed events; 28036 / 28037 batches timed; kernel 329.622 s
HIP PSF progress: 463831040 submitted / 463814656 completed events; 28309 / 28310 batches timed; kernel 333.051 s
HIP PSF progress: 469696512 submitted / 469680128 completed events; 28667 / 28668 batches timed; kernel 337.114 s
HIP PSF progress: 473939968 submitted / 473923584 completed events; 28926 / 28927 batches timed; kernel 340.384 s
HIP PSF progress: 478101504 submitted / 478085120 completed events; 29180 / 29181 batches timed; kernel 343.566 s
HIP PSF progress: 482344960 submitted / 482328576 completed events; 29439 / 29440 batches timed; kernel 346.839 s
HIP PSF progress: 486457344 submitted / 486440960 completed events; 29690 / 29691 batches timed; kernel 350.065 s
HIP PSF progress: 490782720 submitted / 490766336 completed events; 29954 / 29955 batches timed; kernel 353.427 s
HIP PSF progress: 495173632 submitted / 495157248 completed events; 30222 / 30223 batches timed; kernel 356.834 s
HIP PSF progress: 499728384 submitted / 499712000 completed events; 30500 / 30501 batches timed; kernel 360.351 s
HIP PSF progress: 505774080 submitted / 505757696 completed events; 30869 / 30870 batches timed; kernel 364.433 s
HIP PSF progress: 510689280 submitted / 510672896 completed events; 31169 / 31170 batches timed; kernel 368.253 s
HIP PSF progress: 515194880 submitted / 515178496 completed events; 31444 / 31445 batches timed; kernel 371.735 s
HIP PSF progress: 521191424 submitted / 521175040 completed events; 31810 / 31811 batches timed; kernel 375.821 s
HIP PSF progress: 526729216 submitted / 526712832 completed events; 32148 / 32149 batches timed; kernel 379.568 s
HIP PSF progress: 533069824 submitted / 533053440 completed events; 32535 / 32536 batches timed; kernel 383.687 s
HIP PSF progress: 538624000 submitted / 538607616 completed events; 32874 / 32875 batches timed; kernel 387.749 s
HIP PSF progress: 545734656 submitted / 545718272 completed events; 33308 / 33309 batches timed; kernel 391.849 s
HIP PSF progress: 554336256 submitted / 554319872 completed events; 33833 / 33834 batches timed; kernel 395.927 s
HIP PSF progress: 562692096 submitted / 562675712 completed events; 34343 / 34344 batches timed; kernel 399.993 s
HIP PSF progress: 571850752 submitted / 571834368 completed events; 34902 / 34903 batches timed; kernel 404.059 s
HIP PSF progress: 581238784 submitted / 581222400 completed events; 35475 / 35476 batches timed; kernel 408.125 s
HIP PSF progress: 590512128 submitted / 590495744 completed events; 36041 / 36042 batches timed; kernel 412.203 s
Frame 0: splat worker 2/16 reached 8192 local triangles.
Frame 0: splat worker 13/16 reached 8192 local triangles.
Frame 0: splat worker 16/16 reached 8192 local triangles.
Frame 0: splat worker 8/16 reached 8192 local triangles.
Frame 0: splat worker 4/16 reached 8192 local triangles.
Frame 0: splat worker 14/16 reached 8192 local triangles.
HIP PSF progress: 597229568 submitted / 597213184 completed events; 36451 / 36452 batches timed; kernel 415.587 s
Frame 0: splat worker 10/16 reached 8192 local triangles.
Frame 0: splat worker 1/16 finished after 7742 local triangles.
Frame 0: splat worker 16/16 finished after 8548 local triangles.
Frame 0: splat worker 6/16 finished after 7809 local triangles.
Frame 0: splat worker 5/16 finished after 7718 local triangles.
Frame 0: splat worker 12/16 finished after 7920 local triangles.
Frame 0: splat worker 15/16 finished after 7953 local triangles.
Frame 0: splat worker 13/16 finished after 8642 local triangles.
Frame 0: splat worker 3/16 finished after 8148 local triangles.
Frame 0: splat worker 11/16 finished after 8185 local triangles.
Frame 0: splat worker 7/16 finished after 7850 local triangles.
Frame 0: splat worker 9/16 finished after 8117 local triangles.
Frame 0: splat worker 2/16 finished after 8970 local triangles.
Frame 0: splat worker 14/16 finished after 8283 local triangles.
Frame 0: splat worker 4/16 finished after 8344 local triangles.
Frame 0: splat worker 10/16 finished after 8231 local triangles.
Frame 0: splat worker 8/16 finished after 8422 local triangles.
HIP producers: 16 workers; summed generation 694.931 s, submission/fallback 8692.806 s; wall 586.763 s
HIP PSF accumulation: atomic 15 batches, tile16 36515 batches; selector 2.212 s, binning 155.302 s
Frame 0: catalog splatting finished in 586.8 s; writing image...
Rendered 598264924 images from 343363141 catalog stars to output/imgs/2mass_galactic_center_schwarzschild_R100_4k_1e13_beta4.5_16_4-full-gpu-new_blackbody-adaptive.png (ok; imported lens map)
PSF splats: cached 598264924, cached wing-clipped 0, direct fallbacks 0, discarded below min-Y 0
HIP PSF: 598264924 events in 36530 batches (36530 timed); upload 7.506981 s, kernel 416.265471 s, download 0.020804 s
HIP_PSF_ACCUMULATION=adaptive ./build/Release/schwarzschild_sky_hip --verbose 9388.00s user 104.59s system 1482% cpu 10:40.35 total
@@ -0,0 +1,8 @@
COMMAND OMP_NUM_THREADS=16 OMP_DYNAMIC=FALSE env HIP_PSF_ACCUMULATION=adaptive build/Release/replay_psf benchmarks/hip_psf_replay_2026-09-07/center_hotspot_65536.events 65536 production-parallel 128
TIMEOUT 45s
GIT 2d01c2c101ccea8193a64bb46ceafca3009f0ef5
BINARY_SHA256 d056d76de917e764c4f1d516a51657c8d9e9cf3adf97615ccb50b6c81a565002
PSF cache ready: 64x64 phases, radius 47 px, relative tail 1e-08, tail abs 1e-06, boundary 1e-07, build 0.689 s
device=AMD Radeon RX 9070 arch=gfx1201 events=65536 rounds=128 frame=3840x2160 mode=production-parallel distribution=captured contributions_per_round=432818979 CPU_reference=0.821504116 create=0.043420076
complete_replay=4.114833117 replay_wall=4.071413040 select=0.024810469 bin=2.526540803 upload=0.096509804 prepare=0.000000000 accumulation=3.760781384 merge=0.000000000 download=0.004825422 cleanup=0.000000000 events_s=2060367.719 contributions_s=13607273142.154 center_tiles=0 tile_chunks=512 atomic_chunks=0 refs=0 tasks=0 scratch_used_peak=0 scratch_device_reserved=0 RSS_KiB=769216 max_abs=7.6327832942979512e-16 max_rel=3.262701747545357e-14 flux_R=-3.8227195245727636e-16 flux_G=1.6427472194509663e-15 flux_B=3.4955858077692879e-16 flux_Y=8.7225458050005395e-16 validation=scaled-cpu-double-reference
PROCESS_WALL 5.977715039 EXIT 0
@@ -0,0 +1,8 @@
COMMAND OMP_NUM_THREADS=16 OMP_DYNAMIC=FALSE env HIP_PSF_ACCUMULATION=adaptive build/Release/replay_psf benchmarks/hip_psf_replay_2026-09-07/center_hotspot_65536.events 65536 production 128
TIMEOUT 45s
GIT 2d01c2c101ccea8193a64bb46ceafca3009f0ef5
BINARY_SHA256 d056d76de917e764c4f1d516a51657c8d9e9cf3adf97615ccb50b6c81a565002
PSF cache ready: 64x64 phases, radius 47 px, relative tail 1e-08, tail abs 1e-06, boundary 1e-07, build 0.690 s
device=AMD Radeon RX 9070 arch=gfx1201 events=65536 rounds=128 frame=3840x2160 mode=production distribution=captured contributions_per_round=432818979 CPU_reference=0.812561989 create=0.043085814
complete_replay=4.044305801 replay_wall=4.001219988 select=0.023102934 bin=1.362492204 upload=0.093367771 prepare=0.000000000 accumulation=3.760218307 merge=0.000000000 download=0.004831033 cleanup=0.000000000 events_s=2096512.570 contributions_s=13845984344.765 center_tiles=0 tile_chunks=512 atomic_chunks=0 refs=0 tasks=0 scratch_used_peak=0 scratch_device_reserved=0 RSS_KiB=714012 max_abs=6.9388939039072284e-16 max_rel=3.2951664415507829e-14 flux_R=-3.1661685557721843e-16 flux_G=1.3715371417772548e-15 flux_B=4.6151360141508173e-16 flux_Y=7.34376815540858e-16 validation=scaled-cpu-double-reference
PROCESS_WALL 5.878062827 EXIT 0
@@ -0,0 +1,9 @@
COMMAND OMP_NUM_THREADS=16 OMP_DYNAMIC=FALSE env HIP_PSF_ACCUMULATION=atomic build/Release/replay_psf benchmarks/hip_psf_replay_2026-09-07/center_hotspot_65536.events 65536 production 128
TIMEOUT 45s
GIT 2d01c2c101ccea8193a64bb46ceafca3009f0ef5
BINARY_SHA256 d056d76de917e764c4f1d516a51657c8d9e9cf3adf97615ccb50b6c81a565002
PSF cache ready: 64x64 phases, radius 47 px, relative tail 1e-08, tail abs 1e-06, boundary 1e-07, build 0.685 s
device=AMD Radeon RX 9070 arch=gfx1201 events=65536 rounds=128 frame=3840x2160 mode=production distribution=captured contributions_per_round=432818979 CPU_reference=0.824455976 create=0.039549112
HIP PSF progress: 5423104 submitted / 5390336 completed events; 329 / 331 batches timed; kernel 4.955 s
complete_replay=7.750186205 replay_wall=7.710637093 select=0.000000000 bin=0.000000000 upload=0.024176711 prepare=0.000000000 accumulation=7.677463624 merge=0.000000000 download=0.004823231 cleanup=0.000000000 events_s=1087926.704 contributions_s=7184987264.572 center_tiles=0 tile_chunks=0 atomic_chunks=512 refs=0 tasks=0 scratch_used_peak=0 scratch_device_reserved=0 RSS_KiB=705496 max_abs=5.8161808702550388e-14 max_rel=1.9683235272449458e-12 flux_R=-8.4979180688140675e-14 flux_G=-5.8691827583868215e-14 flux_B=-1.9716721500580737e-13 flux_Y=-7.2430195854163766e-14 validation=scaled-cpu-double-reference
PROCESS_WALL 9.631104526 EXIT 0
@@ -0,0 +1,8 @@
COMMAND OMP_NUM_THREADS=16 OMP_DYNAMIC=FALSE env HIP_PSF_ACCUMULATION=adaptive build/Release/replay_psf benchmarks/hip_psf_replay_2026-09-07/center_hotspot_jitter8_65536.events 65536 production-parallel 128
TIMEOUT 45s
GIT 2d01c2c101ccea8193a64bb46ceafca3009f0ef5
BINARY_SHA256 d056d76de917e764c4f1d516a51657c8d9e9cf3adf97615ccb50b6c81a565002
PSF cache ready: 64x64 phases, radius 47 px, relative tail 1e-08, tail abs 1e-06, boundary 1e-07, build 0.688 s
device=AMD Radeon RX 9070 arch=gfx1201 events=65536 rounds=128 frame=3840x2160 mode=production-parallel distribution=captured contributions_per_round=432818979 CPU_reference=0.823680162 create=0.039324999
complete_replay=4.085446835 replay_wall=4.046121836 select=0.024592360 bin=2.512281127 upload=0.095477533 prepare=0.000000000 accumulation=3.736250331 merge=0.000000000 download=0.004828989 cleanup=0.000000000 events_s=2073246.516 contributions_s=13692328496.652 center_tiles=0 tile_chunks=512 atomic_chunks=0 refs=0 tasks=0 scratch_used_peak=0 scratch_device_reserved=0 RSS_KiB=769688 max_abs=4.5796699765787707e-16 max_rel=2.8957011806329541e-14 flux_R=-5.1800450863932944e-16 flux_G=-2.4951712022215009e-16 flux_B=-1.0692738396833103e-15 flux_Y=-3.715787236414898e-16 validation=scaled-cpu-double-reference
PROCESS_WALL 5.974946728 EXIT 0
@@ -0,0 +1,8 @@
COMMAND OMP_NUM_THREADS=16 OMP_DYNAMIC=FALSE env HIP_PSF_ACCUMULATION=adaptive build/Release/replay_psf benchmarks/hip_psf_replay_2026-09-07/center_hotspot_jitter8_65536.events 65536 production 128
TIMEOUT 45s
GIT 2d01c2c101ccea8193a64bb46ceafca3009f0ef5
BINARY_SHA256 d056d76de917e764c4f1d516a51657c8d9e9cf3adf97615ccb50b6c81a565002
PSF cache ready: 64x64 phases, radius 47 px, relative tail 1e-08, tail abs 1e-06, boundary 1e-07, build 0.699 s
device=AMD Radeon RX 9070 arch=gfx1201 events=65536 rounds=128 frame=3840x2160 mode=production distribution=captured contributions_per_round=432818979 CPU_reference=0.819473028 create=0.042947054
complete_replay=3.992443085 replay_wall=3.949496031 select=0.022760497 bin=1.377286212 upload=0.086032513 prepare=0.000000000 accumulation=3.714142802 merge=0.000000000 download=0.004805437 cleanup=0.000000000 events_s=2123969.219 contributions_s=14027316113.209 center_tiles=0 tile_chunks=512 atomic_chunks=0 refs=0 tasks=0 scratch_used_peak=0 scratch_device_reserved=0 RSS_KiB=714272 max_abs=4.649058915617843e-16 max_rel=2.8957011806329541e-14 flux_R=-4.952684264580545e-16 flux_G=-2.4866964535413386e-16 flux_B=-1.108545319419504e-15 flux_Y=-3.6406395718437877e-16 validation=scaled-cpu-double-reference
PROCESS_WALL 5.874483667 EXIT 0
@@ -0,0 +1,9 @@
COMMAND OMP_NUM_THREADS=16 OMP_DYNAMIC=FALSE env HIP_PSF_ACCUMULATION=atomic build/Release/replay_psf benchmarks/hip_psf_replay_2026-09-07/center_hotspot_jitter8_65536.events 65536 production 128
TIMEOUT 45s
GIT 2d01c2c101ccea8193a64bb46ceafca3009f0ef5
BINARY_SHA256 d056d76de917e764c4f1d516a51657c8d9e9cf3adf97615ccb50b6c81a565002
PSF cache ready: 64x64 phases, radius 47 px, relative tail 1e-08, tail abs 1e-06, boundary 1e-07, build 0.700 s
device=AMD Radeon RX 9070 arch=gfx1201 events=65536 rounds=128 frame=3840x2160 mode=production distribution=captured contributions_per_round=432818979 CPU_reference=0.825222015 create=0.039162159
HIP PSF progress: 6455296 submitted / 6422528 completed events; 392 / 394 batches timed; kernel 4.950 s
complete_replay=6.520941973 replay_wall=6.481779814 select=0.000000000 bin=0.000000000 upload=0.025792579 prepare=0.000000000 accumulation=6.446903917 merge=0.000000000 download=0.004890707 cleanup=0.000000000 events_s=1294182.808 contributions_s=8547163110.098 center_tiles=0 tile_chunks=0 atomic_chunks=512 refs=0 tasks=0 scratch_used_peak=0 scratch_device_reserved=0 RSS_KiB=706148 max_abs=2.0834028946481453e-14 max_rel=1.8520792977078497e-12 flux_R=-7.2487421955847032e-14 flux_G=9.3608940832863565e-14 flux_B=6.0115331056700439e-14 flux_Y=3.2639931870553769e-14 validation=scaled-cpu-double-reference
PROCESS_WALL 8.378555340 EXIT 0
@@ -0,0 +1,66 @@
#!/usr/bin/env python3
"""Relocate captured event integer pixels to one 16px-aligned hotspot.
This is a counterfactual PSF workload, not a physical renderer output. The
fractional phase is retained up to double rounding; color, flux, and support
radius are preserved verbatim.
"""
from pathlib import Path
import hashlib
import math
import sys
def main() -> int:
if len(sys.argv) not in (3, 4) or (len(sys.argv) == 4 and sys.argv[3] != "jitter8"):
print("usage: make_hotspot_fixture.py SOURCE.events OUTPUT.events [jitter8]", file=sys.stderr)
return 2
source, output = map(Path, sys.argv[1:3])
jitter = len(sys.argv) == 4
if output.exists():
print(f"refusing to overwrite {output}", file=sys.stderr)
return 2
with source.open() as src:
header = src.readline()
fields = header.split()
if len(fields) != 7 or fields[0] != "PSFEVENTS1":
raise ValueError("unexpected event header")
width, height, count = map(int, fields[1:4])
center_x, center_y = 1928, 1080 # both have remainder 8 modulo 16
if not (47 <= center_x < width - 47 and
47 <= center_y < height - 47):
raise ValueError("fixture requires a 3840x2160-like frame")
with output.open("x") as dst:
dst.write(header)
state = 12345
for index in range(count):
row = src.readline().split()
if len(row) != 7:
raise ValueError(f"bad event {index}")
x, y, *rest = map(float, row)
support = rest[-1]
if not all(map(math.isfinite, (x, y, *rest))):
raise ValueError(f"nonfinite event {index}")
if not (48 <= x < width - 48 and 48 <= y < height - 48):
raise ValueError(f"source event {index} near image edge")
if not (0 <= support <= 47):
raise ValueError(f"unexpected support {index}")
if jitter:
state = (1664525 * state + 1013904223) & 0xffffffff
dx = ((state >> 16) & 7) - 4
state = (1664525 * state + 1013904223) & 0xffffffff
dy = ((state >> 16) & 7) - 4
else:
dx = dy = 0
dst.write(" ".join((format(center_x + dx + x % 1, ".17g"),
format(center_y + dy + y % 1, ".17g"),
*row[2:])) + "\n")
if src.readline():
raise ValueError("trailing event rows")
digest = hashlib.sha256(output.read_bytes()).hexdigest()
print(f"counterfactual hotspot: events={count} jitter8={jitter} output={output} sha256={digest}")
return 0
if __name__ == "__main__":
raise SystemExit(main())
@@ -0,0 +1,8 @@
COMMAND OMP_NUM_THREADS=16 OMP_DYNAMIC=FALSE env HIP_PSF_ACCUMULATION=adaptive build/Release/replay_psf benchmarks/hip_psf_replay_2026-09-07/center_65536.events 65536 production-parallel 128
TIMEOUT 45s
GIT 2d01c2c101ccea8193a64bb46ceafca3009f0ef5
BINARY_SHA256 61b02b48a9b16fdb2f82ab7d6ce9d2d96e8c964a30b2243761b45c21ea346808
PSF cache ready: 64x64 phases, radius 47 px, relative tail 1e-08, tail abs 1e-06, boundary 1e-07, build 0.691 s
device=AMD Radeon RX 9070 arch=gfx1201 events=65536 rounds=128 frame=3840x2160 mode=production-parallel distribution=captured contributions_per_round=432818979 CPU_reference=0.821703911 create=0.037956953
complete_replay=0.043231964 replay_wall=0.005275011 select=0.000000000 bin=0.000000000 upload=0.000000000 prepare=0.000000000 accumulation=0.000000000 merge=0.000000000 download=0.004817793 cleanup=0.000000000 events_s=1590254105.710 contributions_s=10502504858153.168 center_tiles=0 tile_chunks=0 atomic_chunks=0 refs=0 tasks=0 scratch_used_peak=0 scratch_device_reserved=0 RSS_KiB=713392 max_abs=6.2315821111052336e-05 max_rel=1 flux_R=-1 flux_G=-1 flux_B=-1 flux_Y=-1 validation=skipped-for-sustained-timing
PROCESS_WALL 1.921010054 EXIT 0
@@ -0,0 +1,8 @@
COMMAND OMP_NUM_THREADS=16 OMP_DYNAMIC=FALSE env HIP_PSF_ACCUMULATION=adaptive build/Release/replay_psf benchmarks/hip_psf_replay_2026-09-07/center_65536.events 65536 production-parallel 128
TIMEOUT 45s
GIT 2d01c2c101ccea8193a64bb46ceafca3009f0ef5
BINARY_SHA256 821e105f4dd089c167ee1d5a6dd66ad00274a76a3052000c45b0cf89938672d4
PSF cache ready: 64x64 phases, radius 47 px, relative tail 1e-08, tail abs 1e-06, boundary 1e-07, build 0.698 s
device=AMD Radeon RX 9070 arch=gfx1201 events=65536 rounds=128 frame=3840x2160 mode=production-parallel distribution=captured contributions_per_round=432818979 CPU_reference=0.816534042 create=0.038536072
complete_replay=4.007334232 replay_wall=3.968798161 select=0.025326700 bin=0.734336246 upload=0.093892120 prepare=0.000000000 accumulation=3.673438325 merge=0.000000000 download=0.004925077 cleanup=0.000000000 events_s=2113639.359 contributions_s=13959094685.803 center_tiles=0 tile_chunks=512 atomic_chunks=0 refs=0 tasks=0 scratch_used_peak=0 scratch_device_reserved=0 RSS_KiB=769484 max_abs=0.0079141092811036706 max_rel=127.00000000000276 flux_R=126.99999999999998 flux_G=127.00000000000002 flux_B=127.00000000000001 flux_Y=127 validation=skipped-for-sustained-timing
PROCESS_WALL 5.875483527 EXIT 0
@@ -0,0 +1,8 @@
COMMAND OMP_NUM_THREADS=16 OMP_DYNAMIC=FALSE env HIP_PSF_ACCUMULATION=adaptive build/Release/replay_psf benchmarks/hip_psf_replay_2026-09-07/center_65536.events 65536 production-parallel 128
TIMEOUT 45s
GIT 2d01c2c101ccea8193a64bb46ceafca3009f0ef5
BINARY_SHA256 85ae93bc88cd7ee59ddc5578b2a1316d1013450ca806e12b203edfb601767249
PSF cache ready: 64x64 phases, radius 47 px, relative tail 1e-08, tail abs 1e-06, boundary 1e-07, build 0.697 s
device=AMD Radeon RX 9070 arch=gfx1201 events=65536 rounds=128 frame=3840x2160 mode=production-parallel distribution=captured contributions_per_round=432818979 CPU_reference=0.821802139 create=0.039226055
complete_replay=3.997503996 replay_wall=3.958277941 select=0.025676295 bin=0.709459478 upload=0.092489603 prepare=0.000000000 accumulation=3.670325729 merge=0.000000000 download=0.004809070 cleanup=0.000000000 events_s=2119256.941 contributions_s=13996194845.656 center_tiles=0 tile_chunks=512 atomic_chunks=0 refs=0 tasks=0 scratch_used_peak=0 scratch_device_reserved=0 RSS_KiB=770060 max_abs=4.2500725161431774e-17 max_rel=2.146162751251728e-14 flux_R=-1.7563770097849743e-16 flux_G=1.4014665092046261e-16 flux_B=9.2854943878423265e-17 flux_Y=2.4734804247095874e-17 validation=scaled-cpu-double-reference
PROCESS_WALL 5.873358798 EXIT 0
@@ -0,0 +1,233 @@
COMMAND OMP_NUM_THREADS=16 OMP_DYNAMIC=FALSE build/Release/schwarzschild_sky_dummy --verbose --psf-relative-tail 1e-8 --psf-min-y 0 --max-cache-psf-flux 1e8 --all-sky-catalog /tmp/gr-hip-catalog-multi --exposure 1e13 --psf-fwhm-pixels 2.7 --psf-moffat-beta 4.5 --catalog-load-workers 4 --lens-map-input output/lens/schwarzschild_galactic_center_R100_45deg_16_4_4k_.grlens --output /tmp/parallel_prebin_dummy_baseline_small.png
TIMEOUT 60s
GIT 2d01c2c101ccea8193a64bb46ceafca3009f0ef5
BINARY_SHA256 2550fbdc7367ec4d56bdf87894e1322d7f4af5165e93a17af3e6a37806c0649a
Dummy PSF backend: --output and --hdr-output are accepted for command parity but no image files will be written.
Blackbody LUT: 1024 CIE 1931 2-deg 1 nm-linear XYZ nodes, T=[670.146556, 101408.88] K, loaded assets/blackbody/cie1931_2deg_xyz_1024.grbblut in 0.000034 s; payload fnv1a64=0e39867b0e70a809
Blackbody backend: lut
PSF cache ready: 64x64 phases, radius 47 px, relative tail 1e-08, tail abs 1e-06, boundary 1e-07, build 0.678 s
Frame 0: finding and prefetching catalog tiles...
Catalog prefetch: 64440 requested, 3 newly loaded (21087 stars), 64437 unavailable in 0.034 s; 4 loader workers
Frame 0: catalog prefetch finished (64440 candidate tiles).
Frame 0: splatting 130882 lens triangles...
Frame 0: splat worker 2/16 started.
Frame 0: splat worker 3/16 started.
Frame 0: splat worker 4/16 started.
Frame 0: splat worker 1/16 started.
Frame 0: splat worker 2/16 reached 8 local triangles.
Frame 0: splat worker 3/16 reached 8 local triangles.
Frame 0: splat worker 8/16 started.
Frame 0: splat worker 1/16 reached 8 local triangles.
Frame 0: splat worker 8/16 reached 8 local triangles.
Frame 0: splat worker 4/16 reached 8 local triangles.
Frame 0: splat worker 3/16 reached 16 local triangles.
Frame 0: splat worker 5/16 started.
Frame 0: splat worker 7/16 started.
Frame 0: splat worker 1/16 reached 16 local triangles.
Frame 0: splat worker 7/16 reached 8 local triangles.
Frame 0: splat worker 1/16 reached 32 local triangles.
Frame 0: splat worker 8/16 reached 16 local triangles.
Frame 0: splat worker 4/16 reached 16 local triangles.
Frame 0: splat worker 8/16 reached 32 local triangles.
Frame 0: splat worker 3/16 reached 32 local triangles.
Frame 0: splat worker 4/16 reached 32 local triangles.
Frame 0: splat worker 6/16 started.
Frame 0: splat worker 2/16 reached 16 local triangles.
Frame 0: splat worker 6/16 reached 8 local triangles.
Frame 0: splat worker 7/16 reached 16 local triangles.
Frame 0: splat worker 13/16 started.
Frame 0: splat worker 9/16 started.
Frame 0: splat worker 3/16 reached 64 local triangles.
Frame 0: splat worker 8/16 reached 64 local triangles.
Frame 0: splat worker 4/16 reached 64 local triangles.
Frame 0: splat worker 16/16 started.
Frame 0: splat worker 3/16 reached 128 local triangles.
Frame 0: splat worker 16/16 reached 8 local triangles.
Frame 0: splat worker 14/16 started.
Frame 0: splat worker 12/16 started.
Frame 0: splat worker 2/16 reached 32 local triangles.
Frame 0: splat worker 1/16 reached 64 local triangles.
Frame 0: splat worker 6/16 reached 16 local triangles.
Frame 0: splat worker 5/16 reached 8 local triangles.
Frame 0: splat worker 10/16 started.
Frame 0: splat worker 7/16 reached 32 local triangles.
Frame 0: splat worker 11/16 started.
Frame 0: splat worker 13/16 reached 8 local triangles.
Frame 0: splat worker 9/16 reached 8 local triangles.
Frame 0: splat worker 15/16 started.
Frame 0: splat worker 8/16 reached 128 local triangles.
Frame 0: splat worker 16/16 reached 16 local triangles.
Frame 0: splat worker 4/16 reached 128 local triangles.
Frame 0: splat worker 14/16 reached 8 local triangles.
Frame 0: splat worker 13/16 reached 16 local triangles.
Frame 0: splat worker 7/16 reached 64 local triangles.
Frame 0: splat worker 13/16 reached 32 local triangles.
Frame 0: splat worker 16/16 reached 32 local triangles.
Frame 0: splat worker 15/16 reached 8 local triangles.
Frame 0: splat worker 13/16 reached 64 local triangles.
Frame 0: splat worker 16/16 reached 64 local triangles.
Frame 0: splat worker 15/16 reached 16 local triangles.
Frame 0: splat worker 7/16 reached 128 local triangles.
Frame 0: splat worker 14/16 reached 16 local triangles.
Frame 0: splat worker 12/16 reached 8 local triangles.
Frame 0: splat worker 10/16 reached 8 local triangles.
Frame 0: splat worker 6/16 reached 32 local triangles.
Frame 0: splat worker 10/16 reached 16 local triangles.
Frame 0: splat worker 9/16 reached 16 local triangles.
Frame 0: splat worker 6/16 reached 64 local triangles.
Frame 0: splat worker 2/16 reached 64 local triangles.
Frame 0: splat worker 9/16 reached 32 local triangles.
Frame 0: splat worker 10/16 reached 32 local triangles.
Frame 0: splat worker 6/16 reached 128 local triangles.
Frame 0: splat worker 9/16 reached 64 local triangles.
Frame 0: splat worker 2/16 reached 128 local triangles.
Frame 0: splat worker 10/16 reached 64 local triangles.
Frame 0: splat worker 11/16 reached 8 local triangles.
Frame 0: splat worker 5/16 reached 16 local triangles.
Frame 0: splat worker 12/16 reached 16 local triangles.
Frame 0: splat worker 15/16 reached 32 local triangles.
Frame 0: splat worker 15/16 reached 64 local triangles.
Frame 0: splat worker 11/16 reached 16 local triangles.
Frame 0: splat worker 1/16 reached 128 local triangles.
Frame 0: splat worker 11/16 reached 32 local triangles.
Frame 0: splat worker 15/16 reached 128 local triangles.
Frame 0: splat worker 11/16 reached 64 local triangles.
Frame 0: splat worker 1/16 reached 256 local triangles.
Frame 0: splat worker 5/16 reached 32 local triangles.
Frame 0: splat worker 8/16 reached 256 local triangles.
Frame 0: splat worker 12/16 reached 32 local triangles.
Frame 0: splat worker 16/16 reached 128 local triangles.
Frame 0: splat worker 13/16 reached 128 local triangles.
Frame 0: splat worker 3/16 reached 256 local triangles.
Frame 0: splat worker 11/16 reached 128 local triangles.
Frame 0: splat worker 14/16 reached 32 local triangles.
Frame 0: splat worker 4/16 reached 256 local triangles.
Frame 0: splat worker 4/16 reached 512 local triangles.
Frame 0: splat worker 9/16 reached 128 local triangles.
Frame 0: splat worker 5/16 reached 64 local triangles.
Frame 0: splat worker 6/16 reached 256 local triangles.
Frame 0: splat worker 15/16 reached 256 local triangles.
Frame 0: splat worker 13/16 reached 256 local triangles.
Frame 0: splat worker 5/16 reached 128 local triangles.
Frame 0: splat worker 10/16 reached 128 local triangles.
Frame 0: splat worker 16/16 reached 256 local triangles.
Frame 0: splat worker 1/16 reached 512 local triangles.
Frame 0: splat worker 2/16 reached 256 local triangles.
Frame 0: splat worker 11/16 reached 256 local triangles.
Frame 0: splat worker 14/16 reached 64 local triangles.
Frame 0: splat worker 5/16 reached 256 local triangles.
Frame 0: splat worker 7/16 reached 256 local triangles.
Frame 0: splat worker 12/16 reached 64 local triangles.
Frame 0: splat worker 6/16 reached 512 local triangles.
Frame 0: splat worker 15/16 reached 512 local triangles.
Frame 0: splat worker 9/16 reached 256 local triangles.
Frame 0: splat worker 11/16 reached 512 local triangles.
Frame 0: splat worker 8/16 reached 512 local triangles.
Frame 0: splat worker 14/16 reached 128 local triangles.
Frame 0: splat worker 16/16 reached 512 local triangles.
Frame 0: splat worker 2/16 reached 512 local triangles.
Frame 0: splat worker 13/16 reached 512 local triangles.
Frame 0: splat worker 10/16 reached 256 local triangles.
Frame 0: splat worker 1/16 reached 1024 local triangles.
Frame 0: splat worker 7/16 reached 512 local triangles.
Frame 0: splat worker 11/16 reached 1024 local triangles.
Frame 0: splat worker 12/16 reached 128 local triangles.
Frame 0: splat worker 9/16 reached 512 local triangles.
Frame 0: splat worker 12/16 reached 256 local triangles.
Frame 0: splat worker 6/16 reached 1024 local triangles.
Frame 0: splat worker 3/16 reached 512 local triangles.
Frame 0: splat worker 5/16 reached 512 local triangles.
Frame 0: splat worker 8/16 reached 1024 local triangles.
Frame 0: splat worker 14/16 reached 256 local triangles.
Frame 0: splat worker 2/16 reached 1024 local triangles.
Frame 0: splat worker 7/16 reached 1024 local triangles.
Frame 0: splat worker 15/16 reached 1024 local triangles.
Frame 0: splat worker 4/16 reached 1024 local triangles.
Frame 0: splat worker 16/16 reached 1024 local triangles.
Frame 0: splat worker 11/16 reached 2048 local triangles.
Frame 0: splat worker 12/16 reached 512 local triangles.
Frame 0: splat worker 13/16 reached 1024 local triangles.
Frame 0: splat worker 1/16 reached 2048 local triangles.
Frame 0: splat worker 10/16 reached 512 local triangles.
Frame 0: splat worker 14/16 reached 512 local triangles.
Frame 0: splat worker 9/16 reached 1024 local triangles.
Frame 0: splat worker 3/16 reached 1024 local triangles.
Frame 0: splat worker 5/16 reached 1024 local triangles.
Frame 0: splat worker 6/16 reached 2048 local triangles.
Frame 0: splat worker 16/16 reached 2048 local triangles.
Frame 0: splat worker 13/16 reached 2048 local triangles.
Frame 0: splat worker 15/16 reached 2048 local triangles.
Frame 0: splat worker 11/16 reached 4096 local triangles.
Frame 0: splat worker 2/16 reached 2048 local triangles.
Frame 0: splat worker 4/16 reached 2048 local triangles.
Frame 0: splat worker 14/16 reached 1024 local triangles.
Frame 0: splat worker 1/16 reached 4096 local triangles.
Frame 0: splat worker 7/16 reached 2048 local triangles.
Frame 0: splat worker 8/16 reached 2048 local triangles.
Frame 0: splat worker 9/16 reached 2048 local triangles.
Frame 0: splat worker 12/16 reached 1024 local triangles.
Frame 0: splat worker 5/16 reached 2048 local triangles.
Frame 0: splat worker 10/16 reached 1024 local triangles.
Frame 0: splat worker 3/16 reached 2048 local triangles.
Frame 0: splat worker 16/16 reached 4096 local triangles.
Frame 0: splat worker 6/16 reached 4096 local triangles.
Frame 0: splat worker 13/16 reached 4096 local triangles.
Frame 0: splat worker 1/16 reached 8192 local triangles.
Frame 0: splat worker 4/16 reached 4096 local triangles.
Frame 0: splat worker 11/16 reached 8192 local triangles.
Frame 0: splat worker 15/16 reached 4096 local triangles.
Frame 0: splat worker 14/16 reached 2048 local triangles.
Frame 0: splat worker 9/16 reached 4096 local triangles.
Frame 0: splat worker 8/16 reached 4096 local triangles.
Frame 0: splat worker 5/16 reached 4096 local triangles.
Frame 0: splat worker 2/16 reached 4096 local triangles.
Frame 0: splat worker 7/16 reached 4096 local triangles.
Frame 0: splat worker 12/16 reached 2048 local triangles.
Frame 0: splat worker 10/16 reached 2048 local triangles.
Frame 0: splat worker 3/16 reached 4096 local triangles.
Frame 0: splat worker 14/16 reached 4096 local triangles.
Frame 0: splat worker 5/16 reached 8192 local triangles.
Frame 0: splat worker 16/16 reached 8192 local triangles.
Frame 0: splat worker 6/16 reached 8192 local triangles.
Frame 0: splat worker 15/16 reached 8192 local triangles.
Frame 0: splat worker 9/16 reached 8192 local triangles.
Frame 0: splat worker 7/16 reached 8192 local triangles.
Frame 0: splat worker 2/16 reached 8192 local triangles.
Frame 0: splat worker 10/16 reached 4096 local triangles.
Frame 0: splat worker 7/16 finished after 8296 local triangles.
Frame 0: splat worker 9/16 finished after 8547 local triangles.
Frame 0: splat worker 13/16 finished after 7952 local triangles.
Frame 0: splat worker 3/16 finished after 4676 local triangles.
Frame 0: splat worker 14/16 finished after 4747 local triangles.
Frame 0: splat worker 16/16 finished after 8683 local triangles.
Frame 0: splat worker 5/16 finished after 8381 local triangles.
Frame 0: splat worker 4/16 finished after 7846 local triangles.
Frame 0: splat worker 10/16 finished after 4096 local triangles.
Frame 0: splat worker 6/16 finished after 8590 local triangles.
Frame 0: splat worker 12/16 finished after 3776 local triangles.
Frame 0: splat worker 1/16 finished after 16089 local triangles.
Frame 0: splat worker 11/16 finished after 14731 local triangles.
Frame 0: splat worker 15/16 finished after 8467 local triangles.
Frame 0: splat worker 2/16 finished after 8268 local triangles.
Frame 0: splat worker 8/16 finished after 7737 local triangles.
Dummy PSF diagnostic only: no HDR or image was accumulated/written.
Dummy PSF chunks: total=17 full=1 partial=16 events=156837 capacity=16384 selector_tile=32px
Dummy PSF all events: min=548.000 p10=4889.200 p25=6714.000 p50=10553.000 p75=11095.000 p90=12560.400 p99=15952.800 max=16384.000
Dummy PSF all distinct_triangles: min=70.000 p10=82.600 p25=115.000 p50=172.000 p75=177.000 p90=182.200 p99=251.200 max=264.000
Dummy PSF all occupied_32px_tiles: min=58.000 p10=75.400 p25=104.000 p50=146.000 p75=152.000 p90=155.400 p99=197.160 max=205.000
Dummy PSF all event_bbox_diagonal_px: min=2047.674 p10=2700.307 p25=2889.862 p50=2897.187 p75=2901.356 p90=2904.482 p99=2906.997 max=2907.357
Dummy PSF all triangle_centroid_bbox_diagonal_px: min=2040.875 p10=2706.684 p25=2892.125 p50=2900.083 p75=2907.408 p90=2913.330 p99=2918.342 max=2918.947
Dummy PSF all maximum_successive_triangle_jump_px: min=1888.047 p10=1938.810 p25=1981.335 p50=2002.711 p75=2042.003 p90=2051.326 p99=2058.310 max=2058.694
Dummy PSF all adaptive criterion: 12/17 chunks tile16-eligible (events>=8192 and events/occupied_32px_tiles>=32)
Dummy PSF full events: min=16384.000 p10=16384.000 p25=16384.000 p50=16384.000 p75=16384.000 p90=16384.000 p99=16384.000 max=16384.000
Dummy PSF full distinct_triangles: min=171.000 p10=171.000 p25=171.000 p50=171.000 p75=171.000 p90=171.000 p99=171.000 max=171.000
Dummy PSF full occupied_32px_tiles: min=135.000 p10=135.000 p25=135.000 p50=135.000 p75=135.000 p90=135.000 p99=135.000 max=135.000
Dummy PSF full event_bbox_diagonal_px: min=2425.876 p10=2425.876 p25=2425.876 p50=2425.876 p75=2425.876 p90=2425.876 p99=2425.876 max=2425.876
Dummy PSF full triangle_centroid_bbox_diagonal_px: min=2440.348 p10=2440.348 p25=2440.348 p50=2440.348 p75=2440.348 p90=2440.348 p99=2440.348 max=2440.348
Dummy PSF full maximum_successive_triangle_jump_px: min=2058.694 p10=2058.694 p25=2058.694 p50=2058.694 p75=2058.694 p90=2058.694 p99=2058.694 max=2058.694
Dummy PSF full adaptive criterion: 1/1 chunks tile16-eligible (events>=8192 and events/occupied_32px_tiles>=32)
Dummy PSF producers: 16 workers; classification/chunk wall 0.084 s
Frame 0: catalog classification finished in 0.1 s; reporting chunk statistics...
Dummy PSF classified 156837 images from 21087 catalog stars; no HDR, PNG, or PPM was written.
PSF splats: cached 156837, cached wing-clipped 0, direct fallbacks 0, discarded below min-Y 0
PROCESS_WALL 0.917819252 EXIT 0
@@ -0,0 +1,233 @@
COMMAND OMP_NUM_THREADS=16 OMP_DYNAMIC=FALSE env DUMMY_PSF_SUPPORT_STATS=1 build/Release/schwarzschild_sky_dummy --verbose --psf-relative-tail 1e-8 --psf-min-y 0 --max-cache-psf-flux 1e8 --all-sky-catalog /tmp/gr-hip-catalog-multi --exposure 1e13 --psf-fwhm-pixels 2.7 --psf-moffat-beta 4.5 --catalog-load-workers 4 --lens-map-input output/lens/schwarzschild_galactic_center_R100_45deg_16_4_4k_.grlens --output /tmp/parallel_prebin_dummy_support_small.png
TIMEOUT 60s
GIT 2d01c2c101ccea8193a64bb46ceafca3009f0ef5
BINARY_SHA256 2550fbdc7367ec4d56bdf87894e1322d7f4af5165e93a17af3e6a37806c0649a
Dummy PSF backend: --output and --hdr-output are accepted for command parity but no image files will be written.
Blackbody LUT: 1024 CIE 1931 2-deg 1 nm-linear XYZ nodes, T=[670.146556, 101408.88] K, loaded assets/blackbody/cie1931_2deg_xyz_1024.grbblut in 0.000033 s; payload fnv1a64=0e39867b0e70a809
Blackbody backend: lut
PSF cache ready: 64x64 phases, radius 47 px, relative tail 1e-08, tail abs 1e-06, boundary 1e-07, build 0.674 s
Frame 0: finding and prefetching catalog tiles...
Catalog prefetch: 64440 requested, 3 newly loaded (21087 stars), 64437 unavailable in 0.034 s; 4 loader workers
Frame 0: catalog prefetch finished (64440 candidate tiles).
Frame 0: splatting 130882 lens triangles...
Frame 0: splat worker 2/16 started.
Frame 0: splat worker 1/16 started.
Frame 0: splat worker 4/16 started.
Frame 0: splat worker 7/16 started.
Frame 0: splat worker 2/16 reached 8 local triangles.
Frame 0: splat worker 12/16 started.
Frame 0: splat worker 11/16 started.
Frame 0: splat worker 15/16 started.
Frame 0: splat worker 8/16 started.
Frame 0: splat worker 3/16 started.
Frame 0: splat worker 4/16 reached 8 local triangles.
Frame 0: splat worker 5/16 started.
Frame 0: splat worker 7/16 reached 8 local triangles.
Frame 0: splat worker 14/16 started.
Frame 0: splat worker 1/16 reached 8 local triangles.
Frame 0: splat worker 2/16 reached 16 local triangles.
Frame 0: splat worker 16/16 started.
Frame 0: splat worker 13/16 started.
Frame 0: splat worker 10/16 started.
Frame 0: splat worker 9/16 started.
Frame 0: splat worker 6/16 started.
Frame 0: splat worker 12/16 reached 8 local triangles.
Frame 0: splat worker 11/16 reached 8 local triangles.
Frame 0: splat worker 15/16 reached 8 local triangles.
Frame 0: splat worker 8/16 reached 8 local triangles.
Frame 0: splat worker 3/16 reached 8 local triangles.
Frame 0: splat worker 4/16 reached 16 local triangles.
Frame 0: splat worker 5/16 reached 8 local triangles.
Frame 0: splat worker 5/16 reached 16 local triangles.
Frame 0: splat worker 14/16 reached 8 local triangles.
Frame 0: splat worker 1/16 reached 16 local triangles.
Frame 0: splat worker 2/16 reached 32 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 2/16 reached 64 local triangles.
Frame 0: splat worker 9/16 reached 8 local triangles.
Frame 0: splat worker 6/16 reached 8 local triangles.
Frame 0: splat worker 12/16 reached 16 local triangles.
Frame 0: splat worker 11/16 reached 16 local triangles.
Frame 0: splat worker 12/16 reached 32 local triangles.
Frame 0: splat worker 15/16 reached 16 local triangles.
Frame 0: splat worker 3/16 reached 16 local triangles.
Frame 0: splat worker 15/16 reached 32 local triangles.
Frame 0: splat worker 7/16 reached 16 local triangles.
Frame 0: splat worker 5/16 reached 32 local triangles.
Frame 0: splat worker 7/16 reached 32 local triangles.
Frame 0: splat worker 14/16 reached 16 local triangles.
Frame 0: splat worker 1/16 reached 32 local triangles.
Frame 0: splat worker 16/16 reached 16 local triangles.
Frame 0: splat worker 10/16 reached 8 local triangles.
Frame 0: splat worker 16/16 reached 32 local triangles.
Frame 0: splat worker 10/16 reached 16 local triangles.
Frame 0: splat worker 6/16 reached 16 local triangles.
Frame 0: splat worker 2/16 reached 128 local triangles.
Frame 0: splat worker 11/16 reached 32 local triangles.
Frame 0: splat worker 8/16 reached 16 local triangles.
Frame 0: splat worker 12/16 reached 64 local triangles.
Frame 0: splat worker 4/16 reached 32 local triangles.
Frame 0: splat worker 3/16 reached 32 local triangles.
Frame 0: splat worker 15/16 reached 64 local triangles.
Frame 0: splat worker 5/16 reached 64 local triangles.
Frame 0: splat worker 14/16 reached 32 local triangles.
Frame 0: splat worker 7/16 reached 64 local triangles.
Frame 0: splat worker 1/16 reached 64 local triangles.
Frame 0: splat worker 13/16 reached 16 local triangles.
Frame 0: splat worker 9/16 reached 16 local triangles.
Frame 0: splat worker 14/16 reached 64 local triangles.
Frame 0: splat worker 3/16 reached 64 local triangles.
Frame 0: splat worker 12/16 reached 128 local triangles.
Frame 0: splat worker 7/16 reached 128 local triangles.
Frame 0: splat worker 5/16 reached 128 local triangles.
Frame 0: splat worker 1/16 reached 128 local triangles.
Frame 0: splat worker 8/16 reached 32 local triangles.
Frame 0: splat worker 8/16 reached 64 local triangles.
Frame 0: splat worker 6/16 reached 32 local triangles.
Frame 0: splat worker 15/16 reached 128 local triangles.
Frame 0: splat worker 6/16 reached 64 local triangles.
Frame 0: splat worker 8/16 reached 128 local triangles.
Frame 0: splat worker 4/16 reached 64 local triangles.
Frame 0: splat worker 10/16 reached 32 local triangles.
Frame 0: splat worker 14/16 reached 128 local triangles.
Frame 0: splat worker 11/16 reached 64 local triangles.
Frame 0: splat worker 2/16 reached 256 local triangles.
Frame 0: splat worker 11/16 reached 128 local triangles.
Frame 0: splat worker 9/16 reached 32 local triangles.
Frame 0: splat worker 1/16 reached 256 local triangles.
Frame 0: splat worker 8/16 reached 256 local triangles.
Frame 0: splat worker 16/16 reached 64 local triangles.
Frame 0: splat worker 3/16 reached 128 local triangles.
Frame 0: splat worker 10/16 reached 64 local triangles.
Frame 0: splat worker 6/16 reached 128 local triangles.
Frame 0: splat worker 11/16 reached 256 local triangles.
Frame 0: splat worker 16/16 reached 128 local triangles.
Frame 0: splat worker 13/16 reached 32 local triangles.
Frame 0: splat worker 13/16 reached 64 local triangles.
Frame 0: splat worker 13/16 reached 128 local triangles.
Frame 0: splat worker 12/16 reached 256 local triangles.
Frame 0: splat worker 4/16 reached 128 local triangles.
Frame 0: splat worker 9/16 reached 64 local triangles.
Frame 0: splat worker 7/16 reached 256 local triangles.
Frame 0: splat worker 14/16 reached 256 local triangles.
Frame 0: splat worker 5/16 reached 256 local triangles.
Frame 0: splat worker 15/16 reached 256 local triangles.
Frame 0: splat worker 10/16 reached 128 local triangles.
Frame 0: splat worker 2/16 reached 512 local triangles.
Frame 0: splat worker 16/16 reached 256 local triangles.
Frame 0: splat worker 1/16 reached 512 local triangles.
Frame 0: splat worker 10/16 reached 256 local triangles.
Frame 0: splat worker 8/16 reached 512 local triangles.
Frame 0: splat worker 4/16 reached 256 local triangles.
Frame 0: splat worker 3/16 reached 256 local triangles.
Frame 0: splat worker 14/16 reached 512 local triangles.
Frame 0: splat worker 11/16 reached 512 local triangles.
Frame 0: splat worker 12/16 reached 512 local triangles.
Frame 0: splat worker 4/16 reached 512 local triangles.
Frame 0: splat worker 9/16 reached 128 local triangles.
Frame 0: splat worker 5/16 reached 512 local triangles.
Frame 0: splat worker 15/16 reached 512 local triangles.
Frame 0: splat worker 16/16 reached 512 local triangles.
Frame 0: splat worker 2/16 reached 1024 local triangles.
Frame 0: splat worker 6/16 reached 256 local triangles.
Frame 0: splat worker 7/16 reached 512 local triangles.
Frame 0: splat worker 10/16 reached 512 local triangles.
Frame 0: splat worker 3/16 reached 512 local triangles.
Frame 0: splat worker 8/16 reached 1024 local triangles.
Frame 0: splat worker 6/16 reached 512 local triangles.
Frame 0: splat worker 13/16 reached 256 local triangles.
Frame 0: splat worker 1/16 reached 1024 local triangles.
Frame 0: splat worker 12/16 reached 1024 local triangles.
Frame 0: splat worker 9/16 reached 256 local triangles.
Frame 0: splat worker 7/16 reached 1024 local triangles.
Frame 0: splat worker 16/16 reached 1024 local triangles.
Frame 0: splat worker 2/16 reached 2048 local triangles.
Frame 0: splat worker 3/16 reached 1024 local triangles.
Frame 0: splat worker 11/16 reached 1024 local triangles.
Frame 0: splat worker 15/16 reached 1024 local triangles.
Frame 0: splat worker 4/16 reached 1024 local triangles.
Frame 0: splat worker 5/16 reached 1024 local triangles.
Frame 0: splat worker 10/16 reached 1024 local triangles.
Frame 0: splat worker 14/16 reached 1024 local triangles.
Frame 0: splat worker 6/16 reached 1024 local triangles.
Frame 0: splat worker 9/16 reached 512 local triangles.
Frame 0: splat worker 8/16 reached 2048 local triangles.
Frame 0: splat worker 11/16 reached 2048 local triangles.
Frame 0: splat worker 13/16 reached 512 local triangles.
Frame 0: splat worker 12/16 reached 2048 local triangles.
Frame 0: splat worker 4/16 reached 2048 local triangles.
Frame 0: splat worker 15/16 reached 2048 local triangles.
Frame 0: splat worker 3/16 reached 2048 local triangles.
Frame 0: splat worker 16/16 reached 2048 local triangles.
Frame 0: splat worker 1/16 reached 2048 local triangles.
Frame 0: splat worker 7/16 reached 2048 local triangles.
Frame 0: splat worker 2/16 reached 4096 local triangles.
Frame 0: splat worker 14/16 reached 2048 local triangles.
Frame 0: splat worker 13/16 reached 1024 local triangles.
Frame 0: splat worker 5/16 reached 2048 local triangles.
Frame 0: splat worker 10/16 reached 2048 local triangles.
Frame 0: splat worker 9/16 reached 1024 local triangles.
Frame 0: splat worker 6/16 reached 2048 local triangles.
Frame 0: splat worker 11/16 reached 4096 local triangles.
Frame 0: splat worker 4/16 reached 4096 local triangles.
Frame 0: splat worker 15/16 reached 4096 local triangles.
Frame 0: splat worker 9/16 reached 2048 local triangles.
Frame 0: splat worker 16/16 reached 4096 local triangles.
Frame 0: splat worker 2/16 reached 8192 local triangles.
Frame 0: splat worker 5/16 reached 4096 local triangles.
Frame 0: splat worker 12/16 reached 4096 local triangles.
Frame 0: splat worker 7/16 reached 4096 local triangles.
Frame 0: splat worker 8/16 reached 4096 local triangles.
Frame 0: splat worker 14/16 reached 4096 local triangles.
Frame 0: splat worker 13/16 reached 2048 local triangles.
Frame 0: splat worker 10/16 reached 4096 local triangles.
Frame 0: splat worker 1/16 reached 4096 local triangles.
Frame 0: splat worker 6/16 reached 4096 local triangles.
Frame 0: splat worker 3/16 reached 4096 local triangles.
Frame 0: splat worker 11/16 reached 8192 local triangles.
Frame 0: splat worker 16/16 reached 8192 local triangles.
Frame 0: splat worker 12/16 reached 8192 local triangles.
Frame 0: splat worker 15/16 reached 8192 local triangles.
Frame 0: splat worker 4/16 reached 8192 local triangles.
Frame 0: splat worker 7/16 reached 8192 local triangles.
Frame 0: splat worker 5/16 reached 8192 local triangles.
Frame 0: splat worker 10/16 reached 8192 local triangles.
Frame 0: splat worker 9/16 finished after 3894 local triangles.
Frame 0: splat worker 13/16 finished after 3602 local triangles.
Frame 0: splat worker 15/16 finished after 8638 local triangles.
Frame 0: splat worker 11/16 finished after 8707 local triangles.
Frame 0: splat worker 8/16 finished after 7594 local triangles.
Frame 0: splat worker 3/16 finished after 8172 local triangles.
Frame 0: splat worker 12/16 finished after 8432 local triangles.
Frame 0: splat worker 6/16 finished after 7802 local triangles.
Frame 0: splat worker 16/16 finished after 8717 local triangles.
Frame 0: splat worker 14/16 finished after 8050 local triangles.
Frame 0: splat worker 10/16 finished after 8235 local triangles.
Frame 0: splat worker 7/16 finished after 8525 local triangles.
Frame 0: splat worker 1/16 finished after 7681 local triangles.
Frame 0: splat worker 4/16 finished after 8388 local triangles.
Frame 0: splat worker 5/16 finished after 8595 local triangles.
Frame 0: splat worker 2/16 finished after 15850 local triangles.
Dummy PSF diagnostic only: no HDR or image was accumulated/written.
Dummy PSF chunks: total=16 full=0 partial=16 events=156837 capacity=16384 selector_tile=32px
Dummy PSF all events: min=5465.000 p10=6936.500 p25=8572.000 p50=9483.000 p75=10830.750 p90=12585.000 p99=15814.400 max=16280.000
Dummy PSF all distinct_triangles: min=83.000 p10=122.500 p25=163.500 p50=168.500 p75=171.000 p90=189.500 p99=246.850 max=256.000
Dummy PSF all occupied_32px_tiles: min=75.000 p10=107.000 p25=140.250 p50=143.000 p75=147.250 p90=169.000 p99=196.800 max=201.000
Dummy PSF all event_bbox_diagonal_px: min=2841.097 p10=2881.428 p25=2894.653 p50=2902.391 p75=2903.505 p90=2906.395 p99=2907.603 max=2907.682
Dummy PSF all triangle_centroid_bbox_diagonal_px: min=2839.763 p10=2888.817 p25=2898.676 p50=2905.158 p75=2910.870 p90=2916.581 p99=2918.804 max=2918.947
Dummy PSF all maximum_successive_triangle_jump_px: min=1960.131 p10=1980.096 p25=2007.897 p50=2039.490 p75=2048.731 p90=2061.471 p99=2068.576 max=2069.340
Dummy PSF all adaptive criterion: 13/16 chunks tile16-eligible (events>=8192 and events/occupied_32px_tiles>=32)
Dummy PSF full chunks: none
Dummy PSF support diagnostic: 16px rectangular cache-limited first pass only; no references were materialized or uploaded.
Dummy PSF all support_16px_references: min=252240.000 p10=312011.000 p25=388303.250 p50=441115.500 p75=488997.500 p90=572367.500 p99=717465.700 max=736516.000
Dummy PSF all support_16px_tiles: min=2272.000 p10=2939.500 p25=3522.000 p50=3547.500 p75=3628.250 p90=3721.000 p99=4003.100 max=4052.000
Dummy PSF all support_16px_tasks: min=3022.000 p10=3812.000 p25=4569.500 p50=4731.500 p75=4948.750 p90=5393.500 p99=6174.050 max=6284.000
Dummy PSF all maximum_tile_list: min=1272.000 p10=1466.000 p25=2021.250 p50=2381.500 p75=2992.250 p90=3310.500 p99=4139.400 max=4248.000
Dummy PSF all support_first_pass_ms: min=0.516 p10=0.681 p25=0.768 p50=0.841 p75=0.888 p90=0.949 p99=1.014 max=1.023
Dummy PSF all support totals: references=7105893 tasks=75278 summed_first_pass=0.013 s
Dummy PSF producers: 16 workers; classification/chunk wall 0.083 s
Frame 0: catalog classification finished in 0.1 s; reporting chunk statistics...
Dummy PSF classified 156837 images from 21087 catalog stars; no HDR, PNG, or PPM was written.
PSF splats: cached 156837, cached wing-clipped 0, direct fallbacks 0, discarded below min-Y 0
PROCESS_WALL 0.916792891 EXIT 0
@@ -0,0 +1,6 @@
COMMAND OMP_NUM_THREADS=16 OMP_DYNAMIC=FALSE build/Release/test_hip_psf
TIMEOUT 45s
GIT 2d01c2c101ccea8193a64bb46ceafca3009f0ef5
BINARY_SHA256 a9050e7a8bac4810a5b282c749cd17c6bbe4adadf07a238306a1d979a3626b1e
HIP PSF cache comparison: max_abs=2.8421709430404007e-14 max_rel=7.5319184269262976e-16
PROCESS_WALL 0.815635825 EXIT 0
@@ -0,0 +1,8 @@
COMMAND OMP_NUM_THREADS=16 OMP_DYNAMIC=FALSE env HIP_PSF_ACCUMULATION=adaptive build/Release/replay_psf benchmarks/hip_psf_replay_2026-09-07/boundary.events 32771 production-prepared mixed
TIMEOUT 45s
GIT 2d01c2c101ccea8193a64bb46ceafca3009f0ef5
BINARY_SHA256 d056d76de917e764c4f1d516a51657c8d9e9cf3adf97615ccb50b6c81a565002
PSF cache ready: 64x64 phases, radius 47 px, relative tail 1e-08, tail abs 1e-06, boundary 1e-07, build 0.714 s
device=AMD Radeon RX 9070 arch=gfx1201 events=32771 rounds=1 frame=128x96 mode=production-prepared distribution=fixture-mixed-direct contributions_per_round=142133685 CPU_reference=0.275578976 create=0.038097858
complete_replay=0.060217857 replay_wall=0.022119999 select=0.000179393 bin=0.002129981 upload=0.000288204 prepare=0.000000000 accumulation=0.016224077 merge=0.000000000 download=0.000132740 cleanup=0.000000000 events_s=1481510.017 contributions_s=6425573773.203 center_tiles=0 tile_chunks=2 atomic_chunks=1 refs=0 tasks=0 scratch_used_peak=0 scratch_device_reserved=0 RSS_KiB=319908 max_abs=5.9685589803848416e-11 max_rel=5.9595772318269279e-13 flux_R=2.8323267191886195e-14 flux_G=-5.5281251977629701e-15 flux_B=9.6507636840237455e-15 flux_Y=1.1503592402127278e-14 validation=scaled-cpu-double-reference
PROCESS_WALL 1.165812081 EXIT 0
@@ -0,0 +1,215 @@
COMMAND OMP_NUM_THREADS=16 OMP_DYNAMIC=FALSE env HIP_PSF_ACCUMULATION=adaptive build/Release/schwarzschild_sky_hip --verbose --psf-relative-tail 1e-8 --psf-min-y 0 --max-cache-psf-flux 1e8 --all-sky-catalog /tmp/gr-hip-catalog-multi --exposure 1e13 --psf-fwhm-pixels 2.7 --psf-moffat-beta 4.5 --catalog-load-workers 4 --lens-map-input output/lens/schwarzschild_galactic_center_R100_45deg_16_4_4k_.grlens --output /tmp/parallel_prebin_renderer_adaptive.png
TIMEOUT 60s
GIT 2d01c2c101ccea8193a64bb46ceafca3009f0ef5
BINARY_SHA256 b9c967a02a485ccc0d5b8d1571e51b001285907c1cdca9ce446b67050be7bb39
Blackbody LUT: 1024 CIE 1931 2-deg 1 nm-linear XYZ nodes, T=[670.146556, 101408.88] K, loaded assets/blackbody/cie1931_2deg_xyz_1024.grbblut in 0.000034 s; payload fnv1a64=0e39867b0e70a809
Blackbody backend: lut
PSF cache ready: 64x64 phases, radius 47 px, relative tail 1e-08, tail abs 1e-06, boundary 1e-07, build 0.705 s
Frame 0: finding and prefetching catalog tiles...
Catalog prefetch: 64440 requested, 3 newly loaded (21087 stars), 64437 unavailable in 0.033 s; 4 loader workers
Frame 0: catalog prefetch finished (64440 candidate tiles).
Frame 0: splatting 130882 lens triangles...
Frame 0: splat worker 1/16 started.
Frame 0: splat worker 10/16 started.
Frame 0: splat worker 8/16 started.
Frame 0: splat worker 12/16 started.
Frame 0: splat worker 13/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 2/16 reached 8 local triangles.
Frame 0: splat worker 9/16 reached 8 local triangles.
Frame 0: splat worker 2/16 reached 16 local triangles.
Frame 0: splat worker 16/16 started.
Frame 0: splat worker 3/16 started.
Frame 0: splat worker 11/16 started.
Frame 0: splat worker 3/16 reached 8 local triangles.
Frame 0: splat worker 1/16 reached 8 local triangles.
Frame 0: splat worker 3/16 reached 16 local triangles.
Frame 0: splat worker 5/16 started.
Frame 0: splat worker 3/16 reached 32 local triangles.
Frame 0: splat worker 5/16 reached 8 local triangles.
Frame 0: splat worker 6/16 started.
Frame 0: splat worker 12/16 reached 8 local triangles.
Frame 0: splat worker 14/16 started.
Frame 0: splat worker 3/16 reached 64 local triangles.
Frame 0: splat worker 4/16 reached 8 local triangles.
Frame 0: splat worker 2/16 reached 32 local triangles.
Frame 0: splat worker 4/16 reached 16 local triangles.
Frame 0: splat worker 7/16 started.
Frame 0: splat worker 11/16 reached 8 local triangles.
Frame 0: splat worker 1/16 reached 16 local triangles.
Frame 0: splat worker 4/16 reached 32 local triangles.
Frame 0: splat worker 11/16 reached 16 local triangles.
Frame 0: splat worker 2/16 reached 64 local triangles.
Frame 0: splat worker 13/16 reached 8 local triangles.
Frame 0: splat worker 6/16 reached 8 local triangles.
Frame 0: splat worker 11/16 reached 32 local triangles.
Frame 0: splat worker 13/16 reached 16 local triangles.
Frame 0: splat worker 6/16 reached 16 local triangles.
Frame 0: splat worker 4/16 reached 64 local triangles.
Frame 0: splat worker 10/16 reached 8 local triangles.
Frame 0: splat worker 13/16 reached 32 local triangles.
Frame 0: splat worker 6/16 reached 32 local triangles.
Frame 0: splat worker 2/16 reached 128 local triangles.
Frame 0: splat worker 8/16 reached 8 local triangles.
Frame 0: splat worker 5/16 reached 16 local triangles.
Frame 0: splat worker 3/16 reached 128 local triangles.
Frame 0: splat worker 12/16 reached 16 local triangles.
Frame 0: splat worker 9/16 reached 16 local triangles.
Frame 0: splat worker 14/16 reached 8 local triangles.
Frame 0: splat worker 16/16 reached 8 local triangles.
Frame 0: splat worker 7/16 reached 8 local triangles.
Frame 0: splat worker 15/16 started.
Frame 0: splat worker 10/16 reached 16 local triangles.
Frame 0: splat worker 11/16 reached 64 local triangles.
Frame 0: splat worker 1/16 reached 32 local triangles.
Frame 0: splat worker 14/16 reached 16 local triangles.
Frame 0: splat worker 7/16 reached 16 local triangles.
Frame 0: splat worker 13/16 reached 64 local triangles.
Frame 0: splat worker 12/16 reached 32 local triangles.
Frame 0: splat worker 7/16 reached 32 local triangles.
Frame 0: splat worker 12/16 reached 64 local triangles.
Frame 0: splat worker 7/16 reached 64 local triangles.
Frame 0: splat worker 2/16 reached 256 local triangles.
Frame 0: splat worker 1/16 reached 64 local triangles.
Frame 0: splat worker 13/16 reached 128 local triangles.
Frame 0: splat worker 11/16 reached 128 local triangles.
Frame 0: splat worker 5/16 reached 32 local triangles.
Frame 0: splat worker 10/16 reached 32 local triangles.
Frame 0: splat worker 16/16 reached 16 local triangles.
Frame 0: splat worker 16/16 reached 32 local triangles.
Frame 0: splat worker 10/16 reached 64 local triangles.
Frame 0: splat worker 16/16 reached 64 local triangles.
Frame 0: splat worker 6/16 reached 64 local triangles.
Frame 0: splat worker 9/16 reached 32 local triangles.
Frame 0: splat worker 7/16 reached 128 local triangles.
Frame 0: splat worker 15/16 reached 8 local triangles.
Frame 0: splat worker 10/16 reached 128 local triangles.
Frame 0: splat worker 3/16 reached 256 local triangles.
Frame 0: splat worker 9/16 reached 64 local triangles.
Frame 0: splat worker 4/16 reached 128 local triangles.
Frame 0: splat worker 15/16 reached 16 local triangles.
Frame 0: splat worker 11/16 reached 256 local triangles.
Frame 0: splat worker 12/16 reached 128 local triangles.
Frame 0: splat worker 5/16 reached 64 local triangles.
Frame 0: splat worker 1/16 reached 128 local triangles.
Frame 0: splat worker 15/16 reached 32 local triangles.
Frame 0: splat worker 8/16 reached 16 local triangles.
Frame 0: splat worker 14/16 reached 32 local triangles.
Frame 0: splat worker 10/16 reached 256 local triangles.
Frame 0: splat worker 6/16 reached 128 local triangles.
Frame 0: splat worker 8/16 reached 32 local triangles.
Frame 0: splat worker 14/16 reached 64 local triangles.
Frame 0: splat worker 16/16 reached 128 local triangles.
Frame 0: splat worker 5/16 reached 128 local triangles.
Frame 0: splat worker 2/16 reached 512 local triangles.
Frame 0: splat worker 9/16 reached 128 local triangles.
Frame 0: splat worker 14/16 reached 128 local triangles.
Frame 0: splat worker 8/16 reached 64 local triangles.
Frame 0: splat worker 10/16 reached 512 local triangles.
Frame 0: splat worker 7/16 reached 256 local triangles.
Frame 0: splat worker 16/16 reached 256 local triangles.
Frame 0: splat worker 4/16 reached 256 local triangles.
Frame 0: splat worker 13/16 reached 256 local triangles.
Frame 0: splat worker 6/16 reached 256 local triangles.
Frame 0: splat worker 15/16 reached 64 local triangles.
Frame 0: splat worker 1/16 reached 256 local triangles.
Frame 0: splat worker 5/16 reached 256 local triangles.
Frame 0: splat worker 12/16 reached 256 local triangles.
Frame 0: splat worker 9/16 reached 256 local triangles.
Frame 0: splat worker 3/16 reached 512 local triangles.
Frame 0: splat worker 8/16 reached 128 local triangles.
Frame 0: splat worker 14/16 reached 256 local triangles.
Frame 0: splat worker 11/16 reached 512 local triangles.
Frame 0: splat worker 13/16 reached 512 local triangles.
Frame 0: splat worker 7/16 reached 512 local triangles.
Frame 0: splat worker 8/16 reached 256 local triangles.
Frame 0: splat worker 14/16 reached 512 local triangles.
Frame 0: splat worker 10/16 reached 1024 local triangles.
Frame 0: splat worker 1/16 reached 512 local triangles.
Frame 0: splat worker 2/16 reached 1024 local triangles.
Frame 0: splat worker 15/16 reached 128 local triangles.
Frame 0: splat worker 5/16 reached 512 local triangles.
Frame 0: splat worker 4/16 reached 512 local triangles.
Frame 0: splat worker 16/16 reached 512 local triangles.
Frame 0: splat worker 9/16 reached 512 local triangles.
Frame 0: splat worker 12/16 reached 512 local triangles.
Frame 0: splat worker 7/16 reached 1024 local triangles.
Frame 0: splat worker 10/16 reached 2048 local triangles.
Frame 0: splat worker 6/16 reached 512 local triangles.
Frame 0: splat worker 8/16 reached 512 local triangles.
Frame 0: splat worker 13/16 reached 1024 local triangles.
Frame 0: splat worker 1/16 reached 1024 local triangles.
Frame 0: splat worker 15/16 reached 256 local triangles.
Frame 0: splat worker 14/16 reached 1024 local triangles.
Frame 0: splat worker 16/16 reached 1024 local triangles.
Frame 0: splat worker 3/16 reached 1024 local triangles.
Frame 0: splat worker 12/16 reached 1024 local triangles.
Frame 0: splat worker 11/16 reached 1024 local triangles.
Frame 0: splat worker 9/16 reached 1024 local triangles.
Frame 0: splat worker 5/16 reached 1024 local triangles.
Frame 0: splat worker 4/16 reached 1024 local triangles.
Frame 0: splat worker 15/16 reached 512 local triangles.
Frame 0: splat worker 2/16 reached 2048 local triangles.
Frame 0: splat worker 6/16 reached 1024 local triangles.
Frame 0: splat worker 7/16 reached 2048 local triangles.
Frame 0: splat worker 10/16 reached 4096 local triangles.
Frame 0: splat worker 14/16 reached 2048 local triangles.
Frame 0: splat worker 13/16 reached 2048 local triangles.
Frame 0: splat worker 1/16 reached 2048 local triangles.
Frame 0: splat worker 3/16 reached 2048 local triangles.
Frame 0: splat worker 16/16 reached 2048 local triangles.
Frame 0: splat worker 12/16 reached 2048 local triangles.
Frame 0: splat worker 8/16 reached 1024 local triangles.
Frame 0: splat worker 11/16 reached 2048 local triangles.
Frame 0: splat worker 4/16 reached 2048 local triangles.
Frame 0: splat worker 5/16 reached 2048 local triangles.
Frame 0: splat worker 9/16 reached 2048 local triangles.
Frame 0: splat worker 6/16 reached 2048 local triangles.
Frame 0: splat worker 15/16 reached 1024 local triangles.
Frame 0: splat worker 7/16 reached 4096 local triangles.
Frame 0: splat worker 2/16 reached 4096 local triangles.
Frame 0: splat worker 16/16 reached 4096 local triangles.
Frame 0: splat worker 14/16 reached 4096 local triangles.
Frame 0: splat worker 13/16 reached 4096 local triangles.
Frame 0: splat worker 4/16 reached 4096 local triangles.
Frame 0: splat worker 3/16 reached 4096 local triangles.
Frame 0: splat worker 11/16 reached 4096 local triangles.
Frame 0: splat worker 10/16 reached 8192 local triangles.
Frame 0: splat worker 5/16 reached 4096 local triangles.
Frame 0: splat worker 12/16 reached 4096 local triangles.
Frame 0: splat worker 8/16 reached 2048 local triangles.
Frame 0: splat worker 9/16 reached 4096 local triangles.
Frame 0: splat worker 1/16 reached 4096 local triangles.
Frame 0: splat worker 15/16 reached 2048 local triangles.
Frame 0: splat worker 6/16 reached 4096 local triangles.
Frame 0: splat worker 7/16 reached 8192 local triangles.
Frame 0: splat worker 2/16 reached 8192 local triangles.
Frame 0: splat worker 4/16 reached 8192 local triangles.
Frame 0: splat worker 13/16 reached 8192 local triangles.
Frame 0: splat worker 14/16 reached 8192 local triangles.
Frame 0: splat worker 5/16 reached 8192 local triangles.
Frame 0: splat worker 13/16 finished after 8915 local triangles.
Frame 0: splat worker 15/16 finished after 4052 local triangles.
Frame 0: splat worker 8/16 finished after 4010 local triangles.
Frame 0: splat worker 16/16 finished after 7779 local triangles.
Frame 0: splat worker 7/16 finished after 9323 local triangles.
Frame 0: splat worker 9/16 finished after 7797 local triangles.
Frame 0: splat worker 2/16 finished after 9187 local triangles.
Frame 0: splat worker 3/16 finished after 8189 local triangles.
Frame 0: splat worker 10/16 finished after 16231 local triangles.
Frame 0: splat worker 6/16 finished after 6830 local triangles.
Frame 0: splat worker 4/16 finished after 8562 local triangles.
Frame 0: splat worker 11/16 finished after 8026 local triangles.
Frame 0: splat worker 5/16 finished after 8279 local triangles.
Frame 0: splat worker 1/16 finished after 7850 local triangles.
Frame 0: splat worker 12/16 finished after 7557 local triangles.
Frame 0: splat worker 14/16 finished after 8295 local triangles.
HIP producers: 16 workers; summed generation 1.357 s, submission/fallback 0.985 s; wall 0.242 s
HIP PSF accumulation: atomic 3 batches, tile16 13 batches; selector 0.003 s, binning 0.028 s
Frame 0: catalog splatting finished in 0.3 s; writing image...
Rendered 156837 images from 21087 catalog stars to /tmp/parallel_prebin_renderer_adaptive.png (ok; imported lens map)
PSF splats: cached 156837, cached wing-clipped 0, direct fallbacks 0, discarded below min-Y 0
HIP PSF: 156837 events in 16 batches (16 timed); upload 0.001889 s, kernel 0.125011 s, download 0.025020 s
PROCESS_WALL 1.366288443 EXIT 0
@@ -0,0 +1,218 @@
COMMAND OMP_NUM_THREADS=16 OMP_DYNAMIC=FALSE env HIP_PSF_ACCUMULATION=adaptive build/Release/schwarzschild_sky_hip --verbose --psf-relative-tail 1e-8 --psf-min-y 0 --max-cache-psf-flux 1e8 --all-sky-catalog /tmp/gr-hip-catalog-multi --exposure 1e13 --psf-fwhm-pixels 2.7 --psf-moffat-beta 4.5 --catalog-load-workers 4 --lens-map-input output/lens/schwarzschild_galactic_center_R100_45deg_16_4_4k_.grlens --output /tmp/parallel_prebin_renderer_workload.png
TIMEOUT 60s
GIT 2d01c2c101ccea8193a64bb46ceafca3009f0ef5
BINARY_SHA256 9b59357228e56010a70d5728cbc61068397ca0f6d9a243a7feaa4acb91ce5e9f
Blackbody LUT: 1024 CIE 1931 2-deg 1 nm-linear XYZ nodes, T=[670.146556, 101408.88] K, loaded assets/blackbody/cie1931_2deg_xyz_1024.grbblut in 0.000033 s; payload fnv1a64=0e39867b0e70a809
Blackbody backend: lut
PSF cache ready: 64x64 phases, radius 47 px, relative tail 1e-08, tail abs 1e-06, boundary 1e-07, build 0.710 s
Frame 0: finding and prefetching catalog tiles...
Catalog prefetch: 64440 requested, 3 newly loaded (21087 stars), 64437 unavailable in 0.033 s; 4 loader workers
Frame 0: catalog prefetch finished (64440 candidate tiles).
Frame 0: splatting 130882 lens triangles...
Frame 0: splat worker 1/16 started.
Frame 0: splat worker 8/16 started.
Frame 0: splat worker 9/16 started.
Frame 0: splat worker 8/16 reached 8 local triangles.
Frame 0: splat worker 10/16 started.
Frame 0: splat worker 5/16 started.
Frame 0: splat worker 1/16 reached 8 local triangles.
Frame 0: splat worker 3/16 started.
Frame 0: splat worker 2/16 started.
Frame 0: splat worker 2/16 reached 8 local triangles.
Frame 0: splat worker 2/16 reached 16 local triangles.
Frame 0: splat worker 14/16 started.
Frame 0: splat worker 8/16 reached 16 local triangles.
Frame 0: splat worker 4/16 started.
Frame 0: splat worker 10/16 reached 8 local triangles.
Frame 0: splat worker 1/16 reached 16 local triangles.
Frame 0: splat worker 5/16 reached 8 local triangles.
Frame 0: splat worker 11/16 started.
Frame 0: splat worker 11/16 reached 8 local triangles.
Frame 0: splat worker 11/16 reached 16 local triangles.
Frame 0: splat worker 11/16 reached 32 local triangles.
Frame 0: splat worker 11/16 reached 64 local triangles.
Frame 0: splat worker 6/16 started.
Frame 0: splat worker 16/16 started.
Frame 0: splat worker 11/16 reached 128 local triangles.
Frame 0: splat worker 16/16 reached 8 local triangles.
Frame 0: splat worker 7/16 started.
Frame 0: splat worker 16/16 reached 16 local triangles.
Frame 0: splat worker 7/16 reached 8 local triangles.
Frame 0: splat worker 7/16 reached 16 local triangles.
Frame 0: splat worker 16/16 reached 32 local triangles.
Frame 0: splat worker 7/16 reached 32 local triangles.
Frame 0: splat worker 16/16 reached 64 local triangles.
Frame 0: splat worker 7/16 reached 64 local triangles.
Frame 0: splat worker 14/16 reached 8 local triangles.
Frame 0: splat worker 8/16 reached 32 local triangles.
Frame 0: splat worker 4/16 reached 8 local triangles.
Frame 0: splat worker 10/16 reached 16 local triangles.
Frame 0: splat worker 1/16 reached 32 local triangles.
Frame 0: splat worker 5/16 reached 16 local triangles.
Frame 0: splat worker 9/16 reached 8 local triangles.
Frame 0: splat worker 3/16 reached 8 local triangles.
Frame 0: splat worker 13/16 started.
Frame 0: splat worker 2/16 reached 32 local triangles.
Frame 0: splat worker 12/16 started.
Frame 0: splat worker 11/16 reached 256 local triangles.
Frame 0: splat worker 14/16 reached 16 local triangles.
Frame 0: splat worker 4/16 reached 16 local triangles.
Frame 0: splat worker 15/16 started.
Frame 0: splat worker 13/16 reached 8 local triangles.
Frame 0: splat worker 13/16 reached 16 local triangles.
Frame 0: splat worker 9/16 reached 16 local triangles.
Frame 0: splat worker 12/16 reached 8 local triangles.
Frame 0: splat worker 14/16 reached 32 local triangles.
Frame 0: splat worker 6/16 reached 8 local triangles.
Frame 0: splat worker 12/16 reached 16 local triangles.
Frame 0: splat worker 9/16 reached 32 local triangles.
Frame 0: splat worker 13/16 reached 32 local triangles.
Frame 0: splat worker 12/16 reached 32 local triangles.
Frame 0: splat worker 4/16 reached 32 local triangles.
Frame 0: splat worker 6/16 reached 16 local triangles.
Frame 0: splat worker 10/16 reached 32 local triangles.
Frame 0: splat worker 5/16 reached 32 local triangles.
Frame 0: splat worker 16/16 reached 128 local triangles.
Frame 0: splat worker 3/16 reached 16 local triangles.
Frame 0: splat worker 9/16 reached 64 local triangles.
Frame 0: splat worker 13/16 reached 64 local triangles.
Frame 0: splat worker 8/16 reached 64 local triangles.
Frame 0: splat worker 14/16 reached 64 local triangles.
Frame 0: splat worker 15/16 reached 8 local triangles.
Frame 0: splat worker 7/16 reached 128 local triangles.
Frame 0: splat worker 15/16 reached 16 local triangles.
Frame 0: splat worker 10/16 reached 64 local triangles.
Frame 0: splat worker 3/16 reached 32 local triangles.
Frame 0: splat worker 15/16 reached 32 local triangles.
Frame 0: splat worker 13/16 reached 128 local triangles.
Frame 0: splat worker 3/16 reached 64 local triangles.
Frame 0: splat worker 15/16 reached 64 local triangles.
Frame 0: splat worker 6/16 reached 32 local triangles.
Frame 0: splat worker 3/16 reached 128 local triangles.
Frame 0: splat worker 9/16 reached 128 local triangles.
Frame 0: splat worker 15/16 reached 128 local triangles.
Frame 0: splat worker 6/16 reached 64 local triangles.
Frame 0: splat worker 14/16 reached 128 local triangles.
Frame 0: splat worker 4/16 reached 64 local triangles.
Frame 0: splat worker 10/16 reached 128 local triangles.
Frame 0: splat worker 12/16 reached 64 local triangles.
Frame 0: splat worker 2/16 reached 64 local triangles.
Frame 0: splat worker 1/16 reached 64 local triangles.
Frame 0: splat worker 5/16 reached 64 local triangles.
Frame 0: splat worker 13/16 reached 256 local triangles.
Frame 0: splat worker 16/16 reached 256 local triangles.
Frame 0: splat worker 1/16 reached 128 local triangles.
Frame 0: splat worker 4/16 reached 128 local triangles.
Frame 0: splat worker 9/16 reached 256 local triangles.
Frame 0: splat worker 10/16 reached 256 local triangles.
Frame 0: splat worker 7/16 reached 256 local triangles.
Frame 0: splat worker 8/16 reached 128 local triangles.
Frame 0: splat worker 2/16 reached 128 local triangles.
Frame 0: splat worker 12/16 reached 128 local triangles.
Frame 0: splat worker 5/16 reached 128 local triangles.
Frame 0: splat worker 6/16 reached 128 local triangles.
Frame 0: splat worker 14/16 reached 256 local triangles.
Frame 0: splat worker 3/16 reached 256 local triangles.
Frame 0: splat worker 1/16 reached 256 local triangles.
Frame 0: splat worker 5/16 reached 256 local triangles.
Frame 0: splat worker 4/16 reached 256 local triangles.
Frame 0: splat worker 11/16 reached 512 local triangles.
Frame 0: splat worker 12/16 reached 256 local triangles.
Frame 0: splat worker 6/16 reached 256 local triangles.
Frame 0: splat worker 15/16 reached 256 local triangles.
Frame 0: splat worker 10/16 reached 512 local triangles.
Frame 0: splat worker 8/16 reached 256 local triangles.
Frame 0: splat worker 2/16 reached 256 local triangles.
Frame 0: splat worker 13/16 reached 512 local triangles.
Frame 0: splat worker 14/16 reached 512 local triangles.
Frame 0: splat worker 1/16 reached 512 local triangles.
Frame 0: splat worker 4/16 reached 512 local triangles.
Frame 0: splat worker 9/16 reached 512 local triangles.
Frame 0: splat worker 5/16 reached 512 local triangles.
Frame 0: splat worker 6/16 reached 512 local triangles.
Frame 0: splat worker 3/16 reached 512 local triangles.
Frame 0: splat worker 16/16 reached 512 local triangles.
Frame 0: splat worker 7/16 reached 512 local triangles.
Frame 0: splat worker 2/16 reached 512 local triangles.
Frame 0: splat worker 8/16 reached 512 local triangles.
Frame 0: splat worker 12/16 reached 512 local triangles.
Frame 0: splat worker 11/16 reached 1024 local triangles.
Frame 0: splat worker 15/16 reached 512 local triangles.
Frame 0: splat worker 13/16 reached 1024 local triangles.
Frame 0: splat worker 4/16 reached 1024 local triangles.
Frame 0: splat worker 10/16 reached 1024 local triangles.
Frame 0: splat worker 9/16 reached 1024 local triangles.
Frame 0: splat worker 1/16 reached 1024 local triangles.
Frame 0: splat worker 5/16 reached 1024 local triangles.
Frame 0: splat worker 7/16 reached 1024 local triangles.
Frame 0: splat worker 16/16 reached 1024 local triangles.
Frame 0: splat worker 14/16 reached 1024 local triangles.
Frame 0: splat worker 8/16 reached 1024 local triangles.
Frame 0: splat worker 12/16 reached 1024 local triangles.
Frame 0: splat worker 6/16 reached 1024 local triangles.
Frame 0: splat worker 2/16 reached 1024 local triangles.
Frame 0: splat worker 3/16 reached 1024 local triangles.
Frame 0: splat worker 15/16 reached 1024 local triangles.
Frame 0: splat worker 5/16 reached 2048 local triangles.
Frame 0: splat worker 13/16 reached 2048 local triangles.
Frame 0: splat worker 11/16 reached 2048 local triangles.
Frame 0: splat worker 7/16 reached 2048 local triangles.
Frame 0: splat worker 10/16 reached 2048 local triangles.
Frame 0: splat worker 14/16 reached 2048 local triangles.
Frame 0: splat worker 1/16 reached 2048 local triangles.
Frame 0: splat worker 12/16 reached 2048 local triangles.
Frame 0: splat worker 4/16 reached 2048 local triangles.
Frame 0: splat worker 9/16 reached 2048 local triangles.
Frame 0: splat worker 16/16 reached 2048 local triangles.
Frame 0: splat worker 8/16 reached 2048 local triangles.
Frame 0: splat worker 2/16 reached 2048 local triangles.
Frame 0: splat worker 3/16 reached 2048 local triangles.
Frame 0: splat worker 15/16 reached 2048 local triangles.
Frame 0: splat worker 6/16 reached 2048 local triangles.
Frame 0: splat worker 14/16 reached 4096 local triangles.
Frame 0: splat worker 16/16 reached 4096 local triangles.
Frame 0: splat worker 5/16 reached 4096 local triangles.
Frame 0: splat worker 11/16 reached 4096 local triangles.
Frame 0: splat worker 13/16 reached 4096 local triangles.
Frame 0: splat worker 7/16 reached 4096 local triangles.
Frame 0: splat worker 9/16 reached 4096 local triangles.
Frame 0: splat worker 12/16 reached 4096 local triangles.
Frame 0: splat worker 10/16 reached 4096 local triangles.
Frame 0: splat worker 1/16 reached 4096 local triangles.
Frame 0: splat worker 8/16 reached 4096 local triangles.
Frame 0: splat worker 2/16 reached 4096 local triangles.
Frame 0: splat worker 4/16 reached 4096 local triangles.
Frame 0: splat worker 3/16 reached 4096 local triangles.
Frame 0: splat worker 6/16 reached 4096 local triangles.
Frame 0: splat worker 15/16 reached 4096 local triangles.
Frame 0: splat worker 16/16 reached 8192 local triangles.
Frame 0: splat worker 5/16 reached 8192 local triangles.
Frame 0: splat worker 7/16 reached 8192 local triangles.
Frame 0: splat worker 13/16 reached 8192 local triangles.
Frame 0: splat worker 11/16 reached 8192 local triangles.
Frame 0: splat worker 9/16 reached 8192 local triangles.
Frame 0: splat worker 14/16 reached 8192 local triangles.
Frame 0: splat worker 16/16 finished after 9068 local triangles.
Frame 0: splat worker 5/16 finished after 8921 local triangles.
Frame 0: splat worker 7/16 finished after 8971 local triangles.
Frame 0: splat worker 6/16 finished after 7535 local triangles.
Frame 0: splat worker 9/16 finished after 8320 local triangles.
Frame 0: splat worker 11/16 finished after 8387 local triangles.
Frame 0: splat worker 15/16 finished after 7087 local triangles.
Frame 0: splat worker 2/16 finished after 8123 local triangles.
Frame 0: splat worker 8/16 finished after 8149 local triangles.
Frame 0: splat worker 14/16 finished after 8299 local triangles.
Frame 0: splat worker 1/16 finished after 7765 local triangles.
Frame 0: splat worker 4/16 finished after 7952 local triangles.
Frame 0: splat worker 3/16 finished after 7605 local triangles.
Frame 0: splat worker 10/16 finished after 7913 local triangles.
Frame 0: splat worker 12/16 finished after 7977 local triangles.
Frame 0: splat worker 13/16 finished after 8810 local triangles.
HIP producers: 16 workers; summed generation 1.334 s, submission/fallback 0.969 s; wall 0.239 s
HIP PSF accumulation: atomic 3 batches, tile16 13 batches; selector 0.003 s, binning 0.030 s
HIP PSF tile workload: references 6145194, tasks 64056, merges 5465; peak references/chunk 561449
Frame 0: catalog splatting finished in 0.3 s; writing image...
Rendered 156837 images from 21087 catalog stars to /tmp/parallel_prebin_renderer_workload.png (ok; imported lens map)
PSF splats: cached 156837, cached wing-clipped 0, direct fallbacks 0, discarded below min-Y 0
HIP PSF: 156837 events in 16 batches (16 timed); upload 0.004835 s, kernel 0.119296 s, download 0.025378 s
PROCESS_WALL 1.367064572 EXIT 0
@@ -0,0 +1,8 @@
COMMAND OMP_NUM_THREADS=16 OMP_DYNAMIC=FALSE env HIP_PSF_ACCUMULATION=adaptive build/Release/replay_psf benchmarks/hip_psf_replay_2026-09-07/center_65536.events 65536 production 128
TIMEOUT 45s
GIT 2d01c2c101ccea8193a64bb46ceafca3009f0ef5
BINARY_SHA256 61b02b48a9b16fdb2f82ab7d6ce9d2d96e8c964a30b2243761b45c21ea346808
PSF cache ready: 64x64 phases, radius 47 px, relative tail 1e-08, tail abs 1e-06, boundary 1e-07, build 0.693 s
device=AMD Radeon RX 9070 arch=gfx1201 events=65536 rounds=128 frame=3840x2160 mode=production distribution=captured contributions_per_round=432818979 CPU_reference=0.829993010 create=0.041409016
complete_replay=3.920389891 replay_wall=3.878980875 select=0.022354766 bin=0.552004015 upload=0.085706228 prepare=0.000000000 accumulation=3.654319396 merge=0.000000000 download=0.005400386 cleanup=0.000000000 events_s=2162580.397 contributions_s=14282315664.107 center_tiles=0 tile_chunks=512 atomic_chunks=0 refs=0 tasks=0 scratch_used_peak=0 scratch_device_reserved=0 RSS_KiB=715700 max_abs=0.0079141092811036706 max_rel=127.00000000000276 flux_R=126.99999999999998 flux_G=127.00000000000002 flux_B=127.00000000000001 flux_Y=127 validation=skipped-for-sustained-timing
PROCESS_WALL 5.824096583 EXIT 0
@@ -0,0 +1,8 @@
COMMAND OMP_NUM_THREADS=16 OMP_DYNAMIC=FALSE env HIP_PSF_ACCUMULATION=adaptive build/Release/replay_psf benchmarks/hip_psf_replay_2026-09-07/center_65536.events 65536 production 128
TIMEOUT 45s
GIT 2d01c2c101ccea8193a64bb46ceafca3009f0ef5
BINARY_SHA256 85ae93bc88cd7ee59ddc5578b2a1316d1013450ca806e12b203edfb601767249
PSF cache ready: 64x64 phases, radius 47 px, relative tail 1e-08, tail abs 1e-06, boundary 1e-07, build 0.683 s
device=AMD Radeon RX 9070 arch=gfx1201 events=65536 rounds=128 frame=3840x2160 mode=production distribution=captured contributions_per_round=432818979 CPU_reference=0.827760935 create=0.038902044
complete_replay=3.924767017 replay_wall=3.885864973 select=0.022606094 bin=0.549101755 upload=0.087212585 prepare=0.000000000 accumulation=3.659201833 merge=0.000000000 download=0.004815279 cleanup=0.000000000 events_s=2158749.225 contributions_s=14257013482.446 center_tiles=0 tile_chunks=512 atomic_chunks=0 refs=0 tasks=0 scratch_used_peak=0 scratch_device_reserved=0 RSS_KiB=716004 max_abs=4.2500725161431774e-17 max_rel=2.146162751251728e-14 flux_R=-1.871866178468806e-16 flux_G=1.3413216273651358e-16 flux_B=8.2669907468878767e-17 flux_Y=1.6595004964231178e-17 validation=scaled-cpu-double-reference
PROCESS_WALL 5.777861471 EXIT 0
@@ -0,0 +1,8 @@
COMMAND OMP_NUM_THREADS=16 build/Release/replay_psf benchmarks/hip_psf_replay_2026-09-07/center_65536.events 65536 adaptive 128
TIMEOUT 45s
GIT 2d01c2c101ccea8193a64bb46ceafca3009f0ef5
BINARY_SHA256 4b2e99b04076bce7856d0ca2437ec69809dc9846cc1f28eb31e9441da7fb5554
PSF cache ready: 64x64 phases, radius 47 px, relative tail 1e-08, tail abs 1e-06, boundary 1e-07, build 0.675 s
device=AMD Radeon RX 9070 arch=gfx1201 events=65536 rounds=128 frame=3840x2160 mode=adaptive distribution=captured contributions_per_round=432818979 CPU_reference=0.799674988 create=0.041987896
complete_replay=6.414041996 replay_wall=6.372054100 select=0.017690897 bin=0.913024664 upload=0.134202480 prepare=0.127598524 accumulation=5.047840595 merge=0.058924437 download=0.004550932 cleanup=0.000155926 events_s=1316468.421 contributions_s=8694343839.874 center_tiles=4480 tile_chunks=512 atomic_chunks=0 refs=380643200 tasks=1527680 scratch_used_peak=35382764 scratch_device_reserved=184549376 RSS_KiB=712980 max_abs=0.0079141092811036706 max_rel=127.00000000000276 flux_R=126.99999999999998 flux_G=127.00000000000002 flux_B=127.00000000000001 flux_Y=127 validation=skipped-for-sustained-timing
PROCESS_WALL 8.236126567 EXIT 0
@@ -0,0 +1,8 @@
COMMAND OMP_NUM_THREADS=16 build/Release/replay_psf benchmarks/hip_psf_replay_2026-09-07/center_65536.events 65536 adaptive 128
TIMEOUT 45s
GIT 2d01c2c101ccea8193a64bb46ceafca3009f0ef5
BINARY_SHA256 4b2e99b04076bce7856d0ca2437ec69809dc9846cc1f28eb31e9441da7fb5554
PSF cache ready: 64x64 phases, radius 47 px, relative tail 1e-08, tail abs 1e-06, boundary 1e-07, build 0.689 s
device=AMD Radeon RX 9070 arch=gfx1201 events=65536 rounds=128 frame=3840x2160 mode=adaptive distribution=captured contributions_per_round=432818979 CPU_reference=0.810369015 create=0.039092779
complete_replay=6.918852806 replay_wall=6.879760027 select=0.017785549 bin=0.995494843 upload=0.135135412 prepare=0.137796402 accumulation=5.451380730 merge=0.062109709 download=0.005090489 cleanup=0.000160933 events_s=1219316.948 contributions_s=8052726998.489 center_tiles=4480 tile_chunks=512 atomic_chunks=0 refs=380643200 tasks=1527680 scratch_used_peak=35382764 scratch_device_reserved=184549376 RSS_KiB=713656 max_abs=0.0079141092811036706 max_rel=127.00000000000276 flux_R=126.99999999999998 flux_G=127.00000000000002 flux_B=127.00000000000001 flux_Y=127 validation=skipped-for-sustained-timing
PROCESS_WALL 8.781311209 EXIT 0
@@ -0,0 +1,8 @@
COMMAND OMP_NUM_THREADS=16 build/Release/replay_psf benchmarks/hip_psf_replay_2026-09-07/center_65536.events 65536 adaptive 256
TIMEOUT 45s
GIT 2d01c2c101ccea8193a64bb46ceafca3009f0ef5
BINARY_SHA256 4b2e99b04076bce7856d0ca2437ec69809dc9846cc1f28eb31e9441da7fb5554
PSF cache ready: 64x64 phases, radius 47 px, relative tail 1e-08, tail abs 1e-06, boundary 1e-07, build 0.707 s
device=AMD Radeon RX 9070 arch=gfx1201 events=65536 rounds=256 frame=3840x2160 mode=adaptive distribution=captured contributions_per_round=432818979 CPU_reference=0.812426805 create=0.038770914
complete_replay=12.178713083 replay_wall=12.139942169 select=0.039789200 bin=1.752534628 upload=0.268706799 prepare=0.242101908 accumulation=9.592133045 merge=0.114989281 download=0.004442974 cleanup=0.000149965 events_s=1381984.837 contributions_s=9127033480.045 center_tiles=8960 tile_chunks=1024 atomic_chunks=0 refs=761286400 tasks=3055360 scratch_used_peak=35382764 scratch_device_reserved=184549376 RSS_KiB=713688 max_abs=0.01589053438331841 max_rel=255.00000000000605 flux_R=255.00000000000003 flux_G=255.0000000000001 flux_B=255.00000000000009 flux_Y=255.00000000000007 validation=skipped-for-sustained-timing
PROCESS_WALL 14.035563654 EXIT 0
@@ -0,0 +1,9 @@
COMMAND OMP_NUM_THREADS=16 build/Release/replay_psf benchmarks/hip_psf_replay_2026-09-07/center_65536.events 65536 atomic 128
TIMEOUT 45s
GIT 2d01c2c101ccea8193a64bb46ceafca3009f0ef5
BINARY_SHA256 4b2e99b04076bce7856d0ca2437ec69809dc9846cc1f28eb31e9441da7fb5554
PSF cache ready: 64x64 phases, radius 47 px, relative tail 1e-08, tail abs 1e-06, boundary 1e-07, build 0.680 s
device=AMD Radeon RX 9070 arch=gfx1201 events=65536 rounds=128 frame=3840x2160 mode=atomic distribution=captured contributions_per_round=432818979 CPU_reference=0.808657169 create=0.037929773
HIP PSF progress: 5832704 submitted / 5799936 completed events; 354 / 356 batches timed; kernel 4.956 s
complete_replay=7.203079700 replay_wall=7.165149927 select=0.000000000 bin=0.000000000 upload=0.023173370 prepare=0.000000000 accumulation=7.133086327 merge=0.000000000 download=0.004717446 cleanup=0.000000000 events_s=1170751.217 contributions_s=7731984658.431 center_tiles=0 tile_chunks=0 atomic_chunks=512 refs=0 tasks=0 scratch_used_peak=0 scratch_device_reserved=0 RSS_KiB=706080 max_abs=0.0079141092810748759 max_rel=127.00000000011495 flux_R=126.99999999996387 flux_G=126.99999999994397 flux_B=126.99999999987632 flux_Y=126.99999999994908 validation=skipped-for-sustained-timing
PROCESS_WALL 9.037088836 EXIT 0
@@ -0,0 +1,9 @@
COMMAND OMP_NUM_THREADS=16 build/Release/replay_psf benchmarks/hip_psf_replay_2026-09-07/center_65536.events 65536 atomic 128
TIMEOUT 45s
GIT 2d01c2c101ccea8193a64bb46ceafca3009f0ef5
BINARY_SHA256 4b2e99b04076bce7856d0ca2437ec69809dc9846cc1f28eb31e9441da7fb5554
PSF cache ready: 64x64 phases, radius 47 px, relative tail 1e-08, tail abs 1e-06, boundary 1e-07, build 0.674 s
device=AMD Radeon RX 9070 arch=gfx1201 events=65536 rounds=128 frame=3840x2160 mode=atomic distribution=captured contributions_per_round=432818979 CPU_reference=0.799270868 create=0.038532972
HIP PSF progress: 5832704 submitted / 5799936 completed events; 354 / 356 batches timed; kernel 4.944 s
complete_replay=7.187800884 replay_wall=7.149267912 select=0.000000000 bin=0.000000000 upload=0.023609911 prepare=0.000000000 accumulation=7.117070238 merge=0.000000000 download=0.004433700 cleanup=0.000000000 events_s=1173352.028 contributions_s=7749161172.111 center_tiles=0 tile_chunks=0 atomic_chunks=512 refs=0 tasks=0 scratch_used_peak=0 scratch_device_reserved=0 RSS_KiB=705932 max_abs=0.0079141092810748759 max_rel=127.00000000011484 flux_R=126.99999999996388 flux_G=126.99999999994398 flux_B=126.99999999987631 flux_Y=126.99999999994908 validation=skipped-for-sustained-timing
PROCESS_WALL 8.986742215 EXIT 0
@@ -0,0 +1,10 @@
COMMAND OMP_NUM_THREADS=16 build/Release/replay_psf benchmarks/hip_psf_replay_2026-09-07/center_65536.events 65536 atomic 256
TIMEOUT 45s
GIT 2d01c2c101ccea8193a64bb46ceafca3009f0ef5
BINARY_SHA256 4b2e99b04076bce7856d0ca2437ec69809dc9846cc1f28eb31e9441da7fb5554
PSF cache ready: 64x64 phases, radius 47 px, relative tail 1e-08, tail abs 1e-06, boundary 1e-07, build 0.671 s
device=AMD Radeon RX 9070 arch=gfx1201 events=65536 rounds=256 frame=3840x2160 mode=atomic distribution=captured contributions_per_round=432818979 CPU_reference=0.811035872 create=0.039489031
HIP PSF progress: 5799936 submitted / 5767168 completed events; 352 / 354 batches timed; kernel 4.944 s
HIP PSF progress: 11698176 submitted / 11665408 completed events; 712 / 714 batches timed; kernel 9.936 s
complete_replay=14.364993095 replay_wall=14.325504065 select=0.000000000 bin=0.000000000 upload=0.047864901 prepare=0.000000000 accumulation=14.264586411 merge=0.000000000 download=0.004812979 cleanup=0.000000000 events_s=1171143.153 contributions_s=7734573116.915 center_tiles=0 tile_chunks=0 atomic_chunks=1024 refs=0 tasks=0 scratch_used_peak=0 scratch_device_reserved=0 RSS_KiB=706160 max_abs=0.015890534383196337 max_rel=255.00000000039253 flux_R=254.99999999972784 flux_G=254.99999999963809 flux_B=254.9999999993957 flux_Y=254.99999999966304 validation=skipped-for-sustained-timing
PROCESS_WALL 16.201255127 EXIT 0
@@ -0,0 +1,8 @@
COMMAND OMP_NUM_THREADS=16 build/Release/replay_psf benchmarks/hip_psf_replay_2026-09-07/center_65536.events 65536 16 256
TIMEOUT 45s
GIT 2d01c2c101ccea8193a64bb46ceafca3009f0ef5
BINARY_SHA256 4b2e99b04076bce7856d0ca2437ec69809dc9846cc1f28eb31e9441da7fb5554
PSF cache ready: 64x64 phases, radius 47 px, relative tail 1e-08, tail abs 1e-06, boundary 1e-07, build 0.670 s
device=AMD Radeon RX 9070 arch=gfx1201 events=65536 rounds=256 frame=3840x2160 mode=16 distribution=captured contributions_per_round=432818979 CPU_reference=0.806185007 create=0.037205935
complete_replay=13.005264997 replay_wall=12.968059063 select=0.000000000 bin=1.933460951 upload=0.275970221 prepare=0.258111954 accumulation=10.239211798 merge=0.119215965 download=0.005429670 cleanup=0.000169039 events_s=1293733.775 contributions_s=8544197561.568 center_tiles=0 tile_chunks=1024 atomic_chunks=0 refs=761286400 tasks=3055360 scratch_used_peak=35382764 scratch_device_reserved=184549376 RSS_KiB=713260 max_abs=0.01589053438331841 max_rel=255.00000000000605 flux_R=255.00000000000003 flux_G=255.0000000000001 flux_B=255.00000000000009 flux_Y=255.00000000000007 validation=skipped-for-sustained-timing
PROCESS_WALL 14.800955057 EXIT 0
@@ -0,0 +1,9 @@
COMMAND OMP_NUM_THREADS=16 build/Release/replay_psf benchmarks/hip_psf_replay_2026-09-07/center_65536.events 65536 adaptive disperse 128
TIMEOUT 45s
GIT 2d01c2c101ccea8193a64bb46ceafca3009f0ef5
BINARY_SHA256 4b2e99b04076bce7856d0ca2437ec69809dc9846cc1f28eb31e9441da7fb5554
PSF cache ready: 64x64 phases, radius 47 px, relative tail 1e-08, tail abs 1e-06, boundary 1e-07, build 0.671 s
device=AMD Radeon RX 9070 arch=gfx1201 events=65536 rounds=128 frame=3840x2160 mode=adaptive distribution=synthetic-phase-preserving-dispersal contributions_per_round=432818979 CPU_reference=1.486384153 create=0.038954020
HIP PSF progress: 6651904 submitted / 6619136 completed events; 404 / 406 batches timed; kernel 4.940 s
complete_replay=6.322065115 replay_wall=6.283111095 select=0.056676626 bin=0.000000000 upload=0.021694241 prepare=0.000000000 accumulation=6.251395628 merge=0.000000000 download=0.005425636 cleanup=0.000164032 events_s=1335104.198 contributions_s=8817419980.415 center_tiles=3454208 tile_chunks=0 atomic_chunks=512 refs=0 tasks=0 scratch_used_peak=0 scratch_device_reserved=184549376 RSS_KiB=706052 max_abs=0.0028334397981558839 max_rel=127.00000000001013 flux_R=127.00000000000001 flux_G=127.00000000000001 flux_B=126.99999999999989 flux_Y=127.00000000000001 validation=skipped-for-sustained-timing
PROCESS_WALL 8.836966998 EXIT 0
@@ -0,0 +1,9 @@
COMMAND OMP_NUM_THREADS=16 build/Release/replay_psf benchmarks/hip_psf_replay_2026-09-07/center_65536.events 65536 atomic disperse 128
TIMEOUT 45s
GIT 2d01c2c101ccea8193a64bb46ceafca3009f0ef5
BINARY_SHA256 4b2e99b04076bce7856d0ca2437ec69809dc9846cc1f28eb31e9441da7fb5554
PSF cache ready: 64x64 phases, radius 47 px, relative tail 1e-08, tail abs 1e-06, boundary 1e-07, build 0.672 s
device=AMD Radeon RX 9070 arch=gfx1201 events=65536 rounds=128 frame=3840x2160 mode=atomic distribution=synthetic-phase-preserving-dispersal contributions_per_round=432818979 CPU_reference=1.492630959 create=0.040030956
HIP PSF progress: 6651904 submitted / 6619136 completed events; 404 / 406 batches timed; kernel 4.943 s
complete_replay=6.322134018 replay_wall=6.282103062 select=0.000000000 bin=0.000000000 upload=0.023666188 prepare=0.000000000 accumulation=6.249509820 merge=0.000000000 download=0.004631814 cleanup=0.000000000 events_s=1335318.430 contributions_s=8818834834.145 center_tiles=0 tile_chunks=0 atomic_chunks=512 refs=0 tasks=0 scratch_used_peak=0 scratch_device_reserved=0 RSS_KiB=706192 max_abs=0.0028334397981558839 max_rel=127.00000000001013 flux_R=127.00000000000001 flux_G=127.00000000000001 flux_B=126.99999999999989 flux_Y=127.00000000000001 validation=skipped-for-sustained-timing
PROCESS_WALL 8.831796802 EXIT 0
+64
View File
@@ -1014,6 +1014,70 @@ p99 约 3744px,最大相邻三角形跳跃 p99 也约 3744px。因而不能把
真实流式端到端数据验证分桶成本。完整命令、hash、输出保护和原始记录见
[dummy chunk 统计](benchmarks/dummy_psf_chunks_2026-09-11/README.md)。
2026-09-12 在 production HIP sink 中加入了显式可选的 adaptive tile16 路径。默认仍为
原来的 atomic;设置 `HIP_PSF_ACCUMULATION=adaptive` 后,每个至少 8,192-event 的 chunk
先统计 32px 中心 tile,占用密度达到每 tile 32 events 时才使用 tile16,否则继续 atomic。
tile 路径按完整 cache-limited support 构建稀疏 touched-tile 引用,让一个线程拥有一个像素,
在寄存器中完成 double RGB 累积后写回 HDR。超过 256 项的 tile 列表使用有界部分和;
references、tasks、partials 的 device 上限分别为 32 MiB、2 MiB、128 MiB,任一容量不足时
该 chunk 明确回退 atomic。event、metadata 和 partial 缓冲由 sink 持有并复用;所有工作仍在
同一 stream 中保持顺序,direct fallback 仍使用完整 download/CPU/upload 边界。
RX 9070 上,固定 65,536-event 银心真实输入连续回放 128 轮时,production atomic/adaptive
完整 replay wall 为 7.164/4.631 s(1.55×),其中 GPU 阶段为 7.132/3.875 s;adaptive 另含
0.607 s CPU 分桶和 0.091 s 上传。同贡献分散输入会选择 atomic。三 tile renderer 小样中
adaptive 选择 14 个 tile chunk、2 个 atomic chunk,splat wall 为 0.236 s,对照 atomic 为
0.285 s;两张 PNG 的 SHA-256 相同。这些有界结果随后被完整全天测试否定:相同
598,264,924 events 和 36,530 batches 下,atomic/adaptive 的 splat wall 为
480.500/586.763 s,process wall 为 533.62/640.35 s。tile kernel 虽从 477.302 s 降至
416.265 s,但 support 分桶串行花费 155.302 s,且 36,515 batches 被中心密度规则选为
tile16。中心位置的 32px tile 占用不能代表 47px PSF support 扩张后的 references、tasks、
列表长度和成本;固定事件样本也没有代表全天 tile kernel 的工作量分布。atomic 继续作为
默认值;上述旧串行 adaptive 是历史负结果,不能作为新版并行预分桶的结论。当时提出度量完整
support 工作量,并先证明分桶可并行隐藏或移至 GPU,再考虑完整全天复测。原始日志和误差检查见
[HIP 回放记录](benchmarks/hip_psf_replay_2026-09-07.md)。
随后实现的 producer 私有并行预分桶原型保留 GPU HDR/stream 的单 sink 所有权,且 mixed
direct fallback 与小型 renderer 的图像正确性通过。固定银心事件 512-batch 回放中,sink 内
串行分桶和 16 worker 预分桶的完整 wall 分别为 3.886/3.958 s,后者没有收益;此输入又明显
低估全天真实的分桶工作,因此当时证据不足以推荐 adaptive。新诊断记录完整 support
生成的 references、tasks 和 merges。下一步需先获取真实全天 chunk 的这些指标及并行阶段
wall,而不是继续调中心密度阈值或直接重复昂贵的全天 HIP 渲染。
`DUMMY_PSF_SUPPORT_STATS=1` 可在无 HDR/GPU 的相同 16-worker chunk 流上报告这些指标的
分位数及第一遍 support 计数耗时;该耗时不包含 references 写入、task 构建或上传。
完整全天诊断的 36,508 个满 chunk 中,16px support references 的 p50/p90 为
746,749/802,816,touched tiles 的 p50/p90 为 49/168,最大 tile 列表的 p50 已达整批
16,384 个事件;全部 chunk 第一遍计数 worker 时间之和为 29.347 s。旧固定银心回放的
references 总量相近,但展开到更多 tile、最大列表更短。即使构造恰好 49 tiles、最大列表
16,384 的反事实热点回放,tile GPU 阶段仍约 7.3 ms/batch,远低于真实全天均值
11.40 ms/batch;15 个忙等 CPU 线程也未复现该差距。真实全天进度显示中段连续数万批
约 12–13 ms/batch、首尾约 7–8 ms/batch,因此尚不能把性能损失归因于某一个聚合几何量
或单纯主机抢占。当时提出采集旧版中段真实 chunk;该追溯现已搁置,不作为新版推进前提。
2026-09-13 用户重新构建并行预分桶 adaptive 后完成全天渲染:splat 282.944 s、GPU event
阶段 256.184375 s、完整进程 335.75 s。stash 回 `2d01c2c` 重编译后的原 atomic 为
481.417/478.336515/534.37 s,与历史 atomic 相差约 0.2%;该 HEAD 忽略 adaptive 环境变量。
相同 598,264,924 events 下新版 splat 快约 1.70×,但新版全天 HDR 尚未在本次文档工作中
比较。新版 bin 134.374 s 是 worker 累加时间,不能作为串行成本;旧 adaptive GPU 阶段
416.265 s 到新版 256.184 s 的差异仍未定位。**保留历史证据,搁置旧 adaptive 专项追溯,
后续以新版为优化基础;atomic 默认和参考路径本次不变。**
下一步目标是相同物理/数值参数、输入与 HDR/PNG 输出下完整进程达到 240 s/张以内,
这是待验证目标而非承诺。用户在 btop 连续观察到新版 GPU 约 94%、反复降至约 80%,
CPU 满载,并报告原 atomic 能吃满 GPU;旧串行 adaptive 未观测,不能推断其利用率。
GPU busy 不代表净算力利用率,CPU 忙等需通过锁等待和线程 CPU time 定量确认。
仅消除当前 splat 与 GPU event 区间的约 26.8 s 差距仍需约 309 s/张;若其他阶段约
52.8 s 不变,目标要求 splat 约 187.2 s,需要进一步降低 GPU 执行或区间内间隙成本。
先利用已有全天输出完成 HDR 正确性比较,再在新版有界真实流式样本上拆分分桶、锁等待、
GPU 完成等待、staging/上传与 prepare/accumulate/merge,辅以同步设备遥测。根据证据
评估双缓冲重叠准备/上传,必要时对照专用提交线程和有界队列;均为待实验方案,保留单
sink HDR ownership、完成后复用、有界背压及 direct fallback 顺序。随后按实测占比优化
主要 kernel 或输入阶段,保留 double RGB 和现有误差阈值。先完成有界配对、正确性及
完整 provenance,再另行安排全天确认,不以恢复旧版慢因或 btop 达到 100% 为验收条件。
具体目标、计时口径、用户原始证据与限制见
[2026-09-13 全天复测与下一步目标](benchmarks/hip_psf_replay_2026-09-07.md#2026-09-13-全天复测与下一步目标)。
2026-09-12,黑洞渲染的黑体颜色计算改为以仓库内数值 LUT 为默认实现,取代原先
`optics.c` 中的 Wyman 解析 CIE 拟合。正常区使用仓库唯一的
`assets/blackbody/cie1931_2deg_xyz_1024.grbblut`:以 40 位精度把 Planck 谱和