Doc: Record production PSF chunk geometry
Preserve the protected full-catalog dummy run, its initial harness failure, input and output hashes, distribution quantiles, and the resulting sparse-tile scheduling conclusions.
This commit is contained in:
1 parent
d02ecb2181
commit
2fc2b43e8d
5 files changed
+362
No files matched your search
@@ -0,0 +1,84 @@
|
|||||||
|
# Production chunk geometry diagnostic (2026-09-11)
|
||||||
|
|
||||||
|
## Scope
|
||||||
|
|
||||||
|
This run measures the event stream that the production HIP sink would receive
|
||||||
|
for the supplied Schwarzschild Galactic-center render. `PSF_BACKEND=dummy`
|
||||||
|
keeps the real imported lens map, all-sky prefetch, OpenMP dynamic triangle
|
||||||
|
scheduling, inverse mapping, redshift/color/flux work, PSF cache eligibility,
|
||||||
|
and 16,384-event per-worker chunk boundaries. It does not initialize HIP,
|
||||||
|
allocate a full HDR framebuffer, splat pixels, or write PNG/FITS output.
|
||||||
|
|
||||||
|
The run used repository revision `11e703e33dffb1ff168ba11dd922e68b448116b9`
|
||||||
|
plus the uncommitted dummy-backend work. The complete stdout/stderr, executable
|
||||||
|
and input hashes, process resource use, and protected-output hashes are in
|
||||||
|
[`full_catalog.log`](full_catalog.log). An initial harness-only failure before
|
||||||
|
the renderer started is retained as
|
||||||
|
[`full_catalog_missing_time.log`](full_catalog_missing_time.log).
|
||||||
|
|
||||||
|
## Build and run
|
||||||
|
|
||||||
|
```sh
|
||||||
|
make -j1 PSF_BACKEND=dummy SPACETIME=schwarzschild ENABLE_HDR=1 backend
|
||||||
|
python3 benchmarks/dummy_psf_chunks_2026-09-11/run.py
|
||||||
|
```
|
||||||
|
|
||||||
|
The runner fixes `OMP_NUM_THREADS=16` and `OMP_DYNAMIC=FALSE`, uses a 600-second
|
||||||
|
timeout and a process lock, refuses to overwrite its log, and hashes both the
|
||||||
|
named PNG and companion FITS before and after the run. Its renderer arguments
|
||||||
|
are exactly the user-supplied command except that the `_hip` executable is
|
||||||
|
replaced by `_dummy`; the exact expanded command is the first line of the log.
|
||||||
|
|
||||||
|
Inputs and protected outputs:
|
||||||
|
|
||||||
|
- lens map SHA-256:
|
||||||
|
`905f960aea2d276f9586c79fba545a72cf742311e9e7e18faea293835c68bf28`
|
||||||
|
- existing PNG SHA-256 before/after:
|
||||||
|
`3e01feb911e60acce545a6a86870ca05f96250022e874eb8097bec88a8879bfd`
|
||||||
|
- existing FITS SHA-256 before/after:
|
||||||
|
`2408e62dcc22f147da284d87af9a2b0fdd0050eda2dabc23b6ec2554b2f1d38e`
|
||||||
|
|
||||||
|
Both protected files retained the same size and nanosecond mtime as well as the
|
||||||
|
same hash. No HIP backend was run.
|
||||||
|
|
||||||
|
## Result
|
||||||
|
|
||||||
|
The catalog prefetch loaded 343,363,141 stars for 130,882 lens triangles. The
|
||||||
|
producer classified 598,264,924 cache events, with zero direct fallbacks,
|
||||||
|
wing-clipped events, or min-Y discards. Sixteen workers produced 36,524 chunks:
|
||||||
|
36,508 full chunks and one final partial chunk per worker.
|
||||||
|
|
||||||
|
| full-chunk metric | min | p10 | p25 | p50 | p75 | p90 | p99 | max |
|
||||||
|
|---|---:|---:|---:|---:|---:|---:|---:|---:|
|
||||||
|
| event-producing triangles | 1 | 1 | 1 | 2 | 3 | 10 | 31 | 59 |
|
||||||
|
| occupied 32px center tiles | 1 | 1 | 1 | 1 | 2 | 5 | 30 | 45 |
|
||||||
|
| event bbox diagonal (px) | 0.199 | 0.742 | 3.250 | 12.651 | 57.018 | 429.306 | 3759.261 | 3834.557 |
|
||||||
|
| triangle-centroid bbox diagonal (px) | 0 | 0 | 0 | 9.618 | 49.477 | 424.149 | 3744.061 | 3824.075 |
|
||||||
|
| maximum successive centroid jump (px) | 0 | 0 | 0 | 8.724 | 25.157 | 144.000 | 3744.034 | 3792.034 |
|
||||||
|
|
||||||
|
All 36,508 full chunks satisfy the replay prototype's current selector:
|
||||||
|
`events >= 8192 && events / occupied_32px_tiles >= 32`.
|
||||||
|
|
||||||
|
Catalog prefetch took 55.469 s. Producer classification and chunk accounting
|
||||||
|
took 232.340 s; total process wall time was 288.872 s. These are diagnostic CPU
|
||||||
|
costs and do not estimate HIP tile-kernel speed.
|
||||||
|
|
||||||
|
## Interpretation and limits
|
||||||
|
|
||||||
|
The measured production event order strongly supports the hypothesis that a
|
||||||
|
full worker chunk is usually filled by very few image-plane triangles: the
|
||||||
|
median is two and 75% contain at most three. Center-tile occupancy is even more
|
||||||
|
concentrated. This is favorable for a tile16 path because the same output pixels
|
||||||
|
receive many contributions that can be reduced before the final double HDR
|
||||||
|
write.
|
||||||
|
|
||||||
|
The rare tail matters: p99 chunks can contain a few clusters separated by
|
||||||
|
nearly the full 4K image width. “Few triangles” therefore does not imply one
|
||||||
|
small contiguous bounding rectangle. A production implementation should use a
|
||||||
|
sparse occupied-tile list, retain the atomic fallback, and measure the complete
|
||||||
|
streaming sink including binning and synchronization.
|
||||||
|
|
||||||
|
This is one Schwarzschild Galactic-center frame with one 16-worker dynamic
|
||||||
|
schedule. Worker-to-triangle assignment is nondeterministic, so exact quantiles
|
||||||
|
may vary between runs. The result establishes event geometry for this input; it
|
||||||
|
does not by itself establish single-BH/BBH universality or a HIP speedup.
|
||||||
@@ -0,0 +1,235 @@
|
|||||||
|
COMMAND OMP_NUM_THREADS=16 OMP_DYNAMIC=FALSE /home/wyj/Code/C/GR_4d_raytracing/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 --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.png
|
||||||
|
GIT 11e703e33dffb1ff168ba11dd922e68b448116b9
|
||||||
|
BINARY_SHA256 c71a843a6064cd730b4694c5fe4e61249a995106526da0fdca97bc625c7db470
|
||||||
|
LENS_SHA256 905f960aea2d276f9586c79fba545a72cf742311e9e7e18faea293835c68bf28
|
||||||
|
PROTECTED_BEFORE output/imgs/2mass_galactic_center_schwarzschild_R100_4k_1e13_beta4.5_16_4-full-gpu.png sha256=3e01feb911e60acce545a6a86870ca05f96250022e874eb8097bec88a8879bfd size=13072572 mtime_ns=1788744728751407011
|
||||||
|
PROTECTED_BEFORE output/imgs/2mass_galactic_center_schwarzschild_R100_4k_1e13_beta4.5_16_4-full-gpu_HDR.fits sha256=2408e62dcc22f147da284d87af9a2b0fdd0050eda2dabc23b6ec2554b2f1d38e size=99535680 mtime_ns=1788744726380022561
|
||||||
|
Dummy PSF backend: --output and --hdr-output are accepted for command parity but no image files will be written.
|
||||||
|
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, 64440 newly loaded (343363141 stars), 0 unavailable in 55.469 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 3/16 started.
|
||||||
|
Frame 0: splat worker 5/16 started.
|
||||||
|
Frame 0: splat worker 10/16 started.
|
||||||
|
Frame 0: splat worker 7/16 started.
|
||||||
|
Frame 0: splat worker 8/16 started.
|
||||||
|
Frame 0: splat worker 13/16 started.
|
||||||
|
Frame 0: splat worker 11/16 started.
|
||||||
|
Frame 0: splat worker 6/16 started.
|
||||||
|
Frame 0: splat worker 12/16 started.
|
||||||
|
Frame 0: splat worker 9/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 1/16 reached 8 local triangles.
|
||||||
|
Frame 0: splat worker 6/16 reached 8 local triangles.
|
||||||
|
Frame 0: splat worker 10/16 reached 8 local triangles.
|
||||||
|
Frame 0: splat worker 14/16 reached 8 local triangles.
|
||||||
|
Frame 0: splat worker 12/16 reached 8 local triangles.
|
||||||
|
Frame 0: splat worker 2/16 reached 8 local triangles.
|
||||||
|
Frame 0: splat worker 5/16 reached 8 local triangles.
|
||||||
|
Frame 0: splat worker 3/16 reached 8 local triangles.
|
||||||
|
Frame 0: splat worker 7/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 4/16 reached 8 local triangles.
|
||||||
|
Frame 0: splat worker 11/16 reached 8 local triangles.
|
||||||
|
Frame 0: splat worker 13/16 reached 8 local triangles.
|
||||||
|
Frame 0: splat worker 9/16 reached 8 local triangles.
|
||||||
|
Frame 0: splat worker 16/16 reached 8 local triangles.
|
||||||
|
Frame 0: splat worker 12/16 reached 16 local triangles.
|
||||||
|
Frame 0: splat worker 4/16 reached 16 local triangles.
|
||||||
|
Frame 0: splat worker 14/16 reached 16 local triangles.
|
||||||
|
Frame 0: splat worker 6/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 3/16 reached 16 local triangles.
|
||||||
|
Frame 0: splat worker 7/16 reached 16 local triangles.
|
||||||
|
Frame 0: splat worker 2/16 reached 16 local triangles.
|
||||||
|
Frame 0: splat worker 15/16 reached 16 local triangles.
|
||||||
|
Frame 0: splat worker 5/16 reached 16 local triangles.
|
||||||
|
Frame 0: splat worker 11/16 reached 16 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 16/16 reached 16 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 7/16 reached 32 local triangles.
|
||||||
|
Frame 0: splat worker 6/16 reached 32 local triangles.
|
||||||
|
Frame 0: splat worker 8/16 reached 32 local triangles.
|
||||||
|
Frame 0: splat worker 2/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 9/16 reached 32 local triangles.
|
||||||
|
Frame 0: splat worker 1/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 14/16 reached 32 local triangles.
|
||||||
|
Frame 0: splat worker 5/16 reached 32 local triangles.
|
||||||
|
Frame 0: splat worker 13/16 reached 32 local triangles.
|
||||||
|
Frame 0: splat worker 10/16 reached 16 local triangles.
|
||||||
|
Frame 0: splat worker 10/16 reached 32 local triangles.
|
||||||
|
Frame 0: splat worker 4/16 reached 64 local triangles.
|
||||||
|
Frame 0: splat worker 6/16 reached 64 local triangles.
|
||||||
|
Frame 0: splat worker 8/16 reached 64 local triangles.
|
||||||
|
Frame 0: splat worker 2/16 reached 64 local triangles.
|
||||||
|
Frame 0: splat worker 3/16 reached 64 local triangles.
|
||||||
|
Frame 0: splat worker 12/16 reached 64 local triangles.
|
||||||
|
Frame 0: splat worker 11/16 reached 64 local triangles.
|
||||||
|
Frame 0: splat worker 15/16 reached 64 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 5/16 reached 64 local triangles.
|
||||||
|
Frame 0: splat worker 9/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 13/16 reached 64 local triangles.
|
||||||
|
Frame 0: splat worker 10/16 reached 64 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 11/16 reached 128 local triangles.
|
||||||
|
Frame 0: splat worker 6/16 reached 128 local triangles.
|
||||||
|
Frame 0: splat worker 15/16 reached 128 local triangles.
|
||||||
|
Frame 0: splat worker 2/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 3/16 reached 128 local triangles.
|
||||||
|
Frame 0: splat worker 16/16 reached 128 local triangles.
|
||||||
|
Frame 0: splat worker 14/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 13/16 reached 128 local triangles.
|
||||||
|
Frame 0: splat worker 9/16 reached 128 local triangles.
|
||||||
|
Frame 0: splat worker 10/16 reached 128 local triangles.
|
||||||
|
Frame 0: splat worker 13/16 reached 256 local triangles.
|
||||||
|
Frame 0: splat worker 15/16 reached 256 local triangles.
|
||||||
|
Frame 0: splat worker 16/16 reached 256 local triangles.
|
||||||
|
Frame 0: splat worker 8/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 5/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 2/16 reached 256 local triangles.
|
||||||
|
Frame 0: splat worker 7/16 reached 256 local triangles.
|
||||||
|
Frame 0: splat worker 4/16 reached 256 local triangles.
|
||||||
|
Frame 0: splat worker 12/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 9/16 reached 256 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 16/16 reached 512 local triangles.
|
||||||
|
Frame 0: splat worker 5/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 7/16 reached 512 local triangles.
|
||||||
|
Frame 0: splat worker 11/16 reached 512 local triangles.
|
||||||
|
Frame 0: splat worker 1/16 reached 512 local triangles.
|
||||||
|
Frame 0: splat worker 15/16 reached 512 local triangles.
|
||||||
|
Frame 0: splat worker 2/16 reached 512 local triangles.
|
||||||
|
Frame 0: splat worker 10/16 reached 512 local triangles.
|
||||||
|
Frame 0: splat worker 4/16 reached 512 local triangles.
|
||||||
|
Frame 0: splat worker 6/16 reached 512 local triangles.
|
||||||
|
Frame 0: splat worker 14/16 reached 512 local triangles.
|
||||||
|
Frame 0: splat worker 9/16 reached 512 local triangles.
|
||||||
|
Frame 0: splat worker 8/16 reached 1024 local triangles.
|
||||||
|
Frame 0: splat worker 7/16 reached 1024 local triangles.
|
||||||
|
Frame 0: splat worker 12/16 reached 1024 local triangles.
|
||||||
|
Frame 0: splat worker 3/16 reached 1024 local triangles.
|
||||||
|
Frame 0: splat worker 16/16 reached 1024 local triangles.
|
||||||
|
Frame 0: splat worker 11/16 reached 1024 local triangles.
|
||||||
|
Frame 0: splat worker 5/16 reached 1024 local triangles.
|
||||||
|
Frame 0: splat worker 14/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 9/16 reached 1024 local triangles.
|
||||||
|
Frame 0: splat worker 13/16 reached 1024 local triangles.
|
||||||
|
Frame 0: splat worker 6/16 reached 1024 local triangles.
|
||||||
|
Frame 0: splat worker 1/16 reached 1024 local triangles.
|
||||||
|
Frame 0: splat worker 10/16 reached 1024 local triangles.
|
||||||
|
Frame 0: splat worker 2/16 reached 1024 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 16/16 reached 2048 local triangles.
|
||||||
|
Frame 0: splat worker 14/16 reached 2048 local triangles.
|
||||||
|
Frame 0: splat worker 7/16 reached 2048 local triangles.
|
||||||
|
Frame 0: splat worker 3/16 reached 2048 local triangles.
|
||||||
|
Frame 0: splat worker 4/16 reached 2048 local triangles.
|
||||||
|
Frame 0: splat worker 1/16 reached 2048 local triangles.
|
||||||
|
Frame 0: splat worker 11/16 reached 2048 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 15/16 reached 2048 local triangles.
|
||||||
|
Frame 0: splat worker 6/16 reached 2048 local triangles.
|
||||||
|
Frame 0: splat worker 2/16 reached 2048 local triangles.
|
||||||
|
Frame 0: splat worker 9/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 7/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 9/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.
|
||||||
|
Frame 0: splat worker 8/16 reached 4096 local triangles.
|
||||||
|
Frame 0: splat worker 13/16 reached 4096 local triangles.
|
||||||
|
Frame 0: splat worker 5/16 reached 4096 local triangles.
|
||||||
|
Frame 0: splat worker 10/16 reached 4096 local triangles.
|
||||||
|
Frame 0: splat worker 15/16 reached 4096 local triangles.
|
||||||
|
Frame 0: splat worker 11/16 reached 4096 local triangles.
|
||||||
|
Frame 0: splat worker 12/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 3/16 reached 8192 local triangles.
|
||||||
|
Frame 0: splat worker 7/16 reached 8192 local triangles.
|
||||||
|
Frame 0: splat worker 16/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 4/16 reached 8192 local triangles.
|
||||||
|
Frame 0: splat worker 8/16 reached 8192 local triangles.
|
||||||
|
Frame 0: splat worker 2/16 finished after 7916 local triangles.
|
||||||
|
Frame 0: splat worker 8/16 finished after 8212 local triangles.
|
||||||
|
Frame 0: splat worker 6/16 finished after 8150 local triangles.
|
||||||
|
Frame 0: splat worker 1/16 finished after 7784 local triangles.
|
||||||
|
Frame 0: splat worker 4/16 finished after 8227 local triangles.
|
||||||
|
Frame 0: splat worker 15/16 finished after 7878 local triangles.
|
||||||
|
Frame 0: splat worker 14/16 finished after 8186 local triangles.
|
||||||
|
Frame 0: splat worker 11/16 finished after 7962 local triangles.
|
||||||
|
Frame 0: splat worker 9/16 finished after 8276 local triangles.
|
||||||
|
Frame 0: splat worker 16/16 finished after 8477 local triangles.
|
||||||
|
Frame 0: splat worker 3/16 finished after 8967 local triangles.
|
||||||
|
Frame 0: splat worker 7/16 finished after 8576 local triangles.
|
||||||
|
Frame 0: splat worker 10/16 finished after 7772 local triangles.
|
||||||
|
Frame 0: splat worker 13/16 finished after 8295 local triangles.
|
||||||
|
Frame 0: splat worker 12/16 finished after 8013 local triangles.
|
||||||
|
Frame 0: splat worker 5/16 finished after 8191 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=263.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=4.000 p90=10.000 p99=31.000 max=59.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=45.000
|
||||||
|
Dummy PSF all event_bbox_diagonal_px: min=0.199 p10=0.743 p25=3.252 p50=12.667 p75=57.123 p90=432.049 p99=3759.261 max=3834.557
|
||||||
|
Dummy PSF all triangle_centroid_bbox_diagonal_px: min=0.000 p10=0.000 p25=0.000 p50=9.621 p75=49.817 p90=425.680 p99=3744.061 max=3824.075
|
||||||
|
Dummy PSF all maximum_successive_triangle_jump_px: min=0.000 p10=0.000 p25=0.000 p50=8.750 p75=25.157 p90=144.000 p99=3744.034 max=3792.034
|
||||||
|
Dummy PSF all adaptive criterion: 36516/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=59.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=45.000
|
||||||
|
Dummy PSF full event_bbox_diagonal_px: min=0.199 p10=0.742 p25=3.250 p50=12.651 p75=57.018 p90=429.306 p99=3759.261 max=3834.557
|
||||||
|
Dummy PSF full triangle_centroid_bbox_diagonal_px: min=0.000 p10=0.000 p25=0.000 p50=9.618 p75=49.477 p90=424.149 p99=3744.061 max=3824.075
|
||||||
|
Dummy PSF full maximum_successive_triangle_jump_px: min=0.000 p10=0.000 p25=0.000 p50=8.724 p75=25.157 p90=144.000 p99=3744.034 max=3792.034
|
||||||
|
Dummy PSF full adaptive criterion: 36508/36508 chunks tile16-eligible (events>=8192 and events/occupied_32px_tiles>=32)
|
||||||
|
Dummy PSF producers: 16 workers; classification/chunk wall 232.340 s
|
||||||
|
Frame 0: catalog classification finished in 232.3 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
|
||||||
|
PROCESS_WALL 288.871615309 EXIT 0
|
||||||
|
PROCESS_USER 3815.986955000 PROCESS_SYSTEM 12.140569000 MAX_RSS_KIB 13769936
|
||||||
|
PROTECTED_AFTER output/imgs/2mass_galactic_center_schwarzschild_R100_4k_1e13_beta4.5_16_4-full-gpu.png sha256=3e01feb911e60acce545a6a86870ca05f96250022e874eb8097bec88a8879bfd size=13072572 mtime_ns=1788744728751407011 unchanged=yes
|
||||||
|
PROTECTED_AFTER output/imgs/2mass_galactic_center_schwarzschild_R100_4k_1e13_beta4.5_16_4-full-gpu_HDR.fits sha256=2408e62dcc22f147da284d87af9a2b0fdd0050eda2dabc23b6ec2554b2f1d38e size=99535680 mtime_ns=1788744726380022561 unchanged=yes
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
COMMAND OMP_NUM_THREADS=16 OMP_DYNAMIC=FALSE /usr/bin/time -v /home/wyj/Code/C/GR_4d_raytracing/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 --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.png
|
||||||
|
GIT 11e703e33dffb1ff168ba11dd922e68b448116b9
|
||||||
|
BINARY_SHA256 c71a843a6064cd730b4694c5fe4e61249a995106526da0fdca97bc625c7db470
|
||||||
|
LENS_SHA256 905f960aea2d276f9586c79fba545a72cf742311e9e7e18faea293835c68bf28
|
||||||
|
PROTECTED_BEFORE output/imgs/2mass_galactic_center_schwarzschild_R100_4k_1e13_beta4.5_16_4-full-gpu.png sha256=3e01feb911e60acce545a6a86870ca05f96250022e874eb8097bec88a8879bfd size=13072572 mtime_ns=1788744728751407011
|
||||||
|
PROTECTED_BEFORE output/imgs/2mass_galactic_center_schwarzschild_R100_4k_1e13_beta4.5_16_4-full-gpu_HDR.fits sha256=2408e62dcc22f147da284d87af9a2b0fdd0050eda2dabc23b6ec2554b2f1d38e size=99535680 mtime_ns=1788744726380022561
|
||||||
@@ -26,6 +26,22 @@ production HIP 尚未替换为 tile 算法;收益与事件分布有关,不
|
|||||||
全天加速比。未运行完整全天 catalog。测试工具与原型已于 2026-09-11 提交为
|
全天加速比。未运行完整全天 catalog。测试工具与原型已于 2026-09-11 提交为
|
||||||
`7f5ec1a`;以下保留原执行计划作为验收依据。
|
`7f5ec1a`;以下保留原执行计划作为验收依据。
|
||||||
|
|
||||||
|
同日后续实验在 replay 中增加了按 chunk 的中心 tile 密度选择器。当前 RX 9070 配对数据中,
|
||||||
|
65,536-event 银心输入的 adaptive/atomic/tile16 中位数为 67.834/95.018/67.354 ms,
|
||||||
|
同贡献分散输入为 80.092/78.203/99.693 ms;选择扫描中位成本不超过 0.455 ms。
|
||||||
|
mixed fixture 已覆盖同一 stream 内 atomic、tile 与 direct fallback 的组合。结果支持下一步
|
||||||
|
做 production 流式集成原型,但选择器和 tile sink 目前仍只在测试程序中,未改变生产默认。
|
||||||
|
|
||||||
|
随后用只计数的 `PSF_BACKEND=dummy` 跑过用户给定的 45 度 Schwarzschild 银心全天命令,
|
||||||
|
没有启动 HIP,也没有写 HDR/PNG。598,264,924 个 cache event 中有 36,508 个满
|
||||||
|
16,384-event chunk;满 chunk 的 event-producing triangle 数 p50/p75/p90/p99 为
|
||||||
|
2/3/10/31,occupied 32px center tile 数为 1/2/5/30,全部满足当前 adaptive tile16
|
||||||
|
阈值。这把“dense replay”提升成了真实 production producer 顺序的证据,支持把 adaptive
|
||||||
|
tile16 接入 production sink 作为下一步候选。限制是 16-worker dynamic schedule 会有运行间
|
||||||
|
波动,而且 p99 chunk 含相距约 3.7K px 的稀疏簇;实现必须保留稀疏 tile 列表和 atomic
|
||||||
|
fallback,不能假定单一连续小矩形。详见
|
||||||
|
[dummy chunk 全量记录](benchmarks/dummy_psf_chunks_2026-09-11/README.md)。
|
||||||
|
|
||||||
## 下一步执行计划(2026-09-07,原计划;有界实验已实施)
|
## 下一步执行计划(2026-09-07,原计划;有界实验已实施)
|
||||||
|
|
||||||
### 依据与目标
|
### 依据与目标
|
||||||
|
|||||||
@@ -993,6 +993,27 @@ CPU 按完整、经 cache 限制的 support 矩形建立 tile 引用;GPU 仍
|
|||||||
合并、清理和下载的完整成本及分布依赖,不能只引用无 atomic kernel 的单项耗时。
|
合并、清理和下载的完整成本及分布依赖,不能只引用无 atomic kernel 的单项耗时。
|
||||||
本轮生产 HIP 路径保持原实现,尚未进行新的完整全天渲染。
|
本轮生产 HIP 路径保持原实现,尚未进行新的完整全天渲染。
|
||||||
|
|
||||||
|
2026-09-11 的后续有界实验加入了按 chunk 的分布选择器:先统计 32px 中心 tile 占用,
|
||||||
|
再在高中心密度 chunk 使用 16×16 像素归约,其余保留 atomic。RX 9070 的配对回放中,
|
||||||
|
它在银心密集输入接近固定 tile16,同时在同贡献分散输入选择 atomic,详情见上述回放记录。
|
||||||
|
此选择器仍仅存在于测试程序;阈值来自固定样本,尚未验证 production producer/sink 锁竞争
|
||||||
|
或完整全天事件序列,因此不能成为 renderer 默认策略。
|
||||||
|
|
||||||
|
2026-09-11 又加入了 `PSF_BACKEND=dummy` 的只统计后端。它要求导入 `.grlens`,复用
|
||||||
|
production 的 OpenMP `schedule(dynamic,1)`、每 worker 16,384-event chunk,以及完整的
|
||||||
|
catalog/inverse-map/颜色/flux/cache 分类,但不分配完整 HDR,也绝不写 PNG/FITS。对银心
|
||||||
|
45 度 Schwarzschild 全天输入的一次 16-worker 全量运行中,598,264,924 个 cache event
|
||||||
|
形成 36,508 个满 chunk;满 chunk 跨越的 event-producing triangle 数为 p50=2、p75=3、
|
||||||
|
p90=10、p99=31、max=59,32px 中心 tile 占用为 p50=1、p75=2、p90=5、p99=30、
|
||||||
|
max=45。全部满 chunk 都满足当前测试选择器的 tile16 条件。
|
||||||
|
|
||||||
|
这个结果支持“真实宽视场下一个 worker 的满 chunk 通常集中在少数三角形/少数局部
|
||||||
|
tile”这一调度假设,但也揭示了稀有的远距离簇:满 chunk 的三角形质心包围盒对角线
|
||||||
|
p99 约 3744px,最大相邻三角形跳跃 p99 也约 3744px。因而不能把“少数三角形”等同于
|
||||||
|
“全 chunk 单个连续矩形”;production tile 原型仍应按稀疏 occupied-tile 列表处理,并用
|
||||||
|
真实流式端到端数据验证分桶成本。完整命令、hash、输出保护和原始记录见
|
||||||
|
[dummy chunk 统计](benchmarks/dummy_psf_chunks_2026-09-11/README.md)。
|
||||||
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user