Files
GR-raytracing/benchmarks/sensor_bloom_2026-09-27.md
T
wyj 4e34780fa9 Doc: Record the isolated sensor-bloom benchmark
Store the bounded 512x288 synthetic-frame benchmark for the optional
sensor bloom model: the tested commit and file hashes, the exact build
and run commands, and the raw OMP_NUM_THREADS=1/4/16 outputs. It does not
claim any full-resolution or production performance.
2026-09-27 04:39:57 -04:00

6.8 KiB

Sensor bloom model benchmark (2026-09-27)

Isolated benchmark of the optional src/sensor_bloom.c limited-response model. It performs no ray tracing, catalog lookup, or PSF splatting: it fills a synthetic HDR framebuffer and times the post-processing model alone. The default frame is 512x288 so a full sweep stays bounded; larger optional sizes are clamped to 1024 and this target is not part of make test.

Environment: Gentoo, cc 15.3.0, 16 CPUs.

Tested code

The model under test is committed as 9cd933d1f83cf768249031402cb347a159a70f2d (the sensor-bloom implementation is the only change it contains). The benchmark was run from that content; the only untracked files at run time were this record and the pre-existing unrelated nmesh_spacetime_output_format.md.

$ git rev-parse HEAD
9cd933d1f83cf768249031402cb347a159a70f2d

$ git status --short
?? benchmarks/sensor_bloom_2026-09-27.md
?? nmesh_spacetime_output_format.md

Exact content hashes of the files that define and exercise the model at benchmark time (nmesh_spacetime_output_format.md is a pre-existing unrelated untracked file and was not part of this work):

$ sha256sum src/sensor_bloom.c src/sensor_bloom.h tests/test_sensor_bloom.c tests/benchmark_sensor_bloom.c src/main.c Makefile tests/test_camera_cli.py
e6f5c8fd3de13756e6804f27b26c27827715667bf0ec46951b4f2bbb8eaabffd  src/sensor_bloom.c
03e8e58061cfe420630a71b7969350e2e7efecee26d96a57b5a1087a25e4a2ab  src/sensor_bloom.h
897643aba1631553bdee462a95e6c08c23b16fdf43f0b8d7a4857f369a087f14  tests/test_sensor_bloom.c
b1f4a3ed5622ca5c11fc58c87c3aee3bb9149e3035b68ea8c7671f3ce01c1a10  tests/benchmark_sensor_bloom.c
fdced6f075f77f17cb795c315fb0ac0590cc11789b556af3792d7ef47fed2629  src/main.c
3852dea3c9e9b22a99d03623301b79fc4c0a62cd5808fb97f5f0abb81ee3f379  Makefile
5fd9bae9dc1f841105b508ed6b6fce6429357b40e06adf700d5ce333b72ba92a  tests/test_camera_cli.py

Commands

make -B -j4 BUILD_TYPE=Release PSF_BACKEND=cpu sensor-bloom-bench
OMP_NUM_THREADS=1  ./build/Release/obj/minkowski/standard_sink1_cpu/benchmark_sensor_bloom
OMP_NUM_THREADS=4  ./build/Release/obj/minkowski/standard_sink1_cpu/benchmark_sensor_bloom
OMP_NUM_THREADS=16 ./build/Release/obj/minkowski/standard_sink1_cpu/benchmark_sensor_bloom

Raw build output

mkdir -p build/Release/obj/minkowski/standard_sink1_cpu
cc -DENABLE_PNG -DFRAME_PSF_EVENT_SINK=1 -DFAST_PSF_FFTW  -std=c11 -march=native -pipe -Wall -Wextra -Wpedantic -O2 -DNDEBUG -fopenmp -Isrc tests/benchmark_sensor_bloom.c src/sensor_bloom.c -lm -lpng -lfftw3_omp -lfftw3 -o build/Release/obj/minkowski/standard_sink1_cpu/benchmark_sensor_bloom

Raw benchmark output

### OMP_NUM_THREADS=1
sensor-bloom benchmark: size=512x288 threads=1 limit=1.000
central    e=0.00 size=512x288 saturated=3 predicted=1 actual=1 bbox=0.0001 elapsed=0.001640s checksum=aaec29797d030b5a
scattered  e=0.00 size=512x288 saturated=192 predicted=1 actual=1 bbox=0.7751 elapsed=0.003504s checksum=0c52973c56f09383
random5pct e=0.00 size=512x288 saturated=22223 predicted=1 actual=1 bbox=1.0000 elapsed=0.003353s checksum=d489cdf14f756d3a
central    e=0.50 size=512x288 saturated=3 predicted=43 actual=15 bbox=0.0065 elapsed=0.001633s checksum=6625d592f76add42
scattered  e=0.50 size=512x288 saturated=192 predicted=43 actual=15 bbox=0.8433 elapsed=0.020001s checksum=44e39b09a596122f
random5pct e=0.50 size=512x288 saturated=22223 predicted=40 actual=17 bbox=1.0000 elapsed=0.027526s checksum=d8c99ec18949278a
central    e=0.90 size=512x288 saturated=3 predicted=233 actual=43 bbox=0.0513 elapsed=0.002913s checksum=6cf4d8e02d652b62
scattered  e=0.90 size=512x288 saturated=192 predicted=233 actual=43 bbox=0.9609 elapsed=0.059650s checksum=ef91f6cf7f41249b
random5pct e=0.90 size=512x288 saturated=22223 predicted=216 actual=47 bbox=1.0000 elapsed=0.077348s checksum=fd976dae0c08cc92
### OMP_NUM_THREADS=4
sensor-bloom benchmark: size=512x288 threads=4 limit=1.000
central    e=0.00 size=512x288 saturated=3 predicted=1 actual=1 bbox=0.0001 elapsed=0.001911s checksum=aaec29797d030b5a
scattered  e=0.00 size=512x288 saturated=192 predicted=1 actual=1 bbox=0.7751 elapsed=0.002795s checksum=0c52973c56f09383
random5pct e=0.00 size=512x288 saturated=22223 predicted=1 actual=1 bbox=1.0000 elapsed=0.001979s checksum=d489cdf14f756d3a
central    e=0.50 size=512x288 saturated=3 predicted=43 actual=15 bbox=0.0065 elapsed=0.001981s checksum=6625d592f76add42
scattered  e=0.50 size=512x288 saturated=192 predicted=43 actual=15 bbox=0.8433 elapsed=0.006968s checksum=44e39b09a596122f
random5pct e=0.50 size=512x288 saturated=22223 predicted=40 actual=17 bbox=1.0000 elapsed=0.010725s checksum=d8c99ec18949278a
central    e=0.90 size=512x288 saturated=3 predicted=233 actual=43 bbox=0.0513 elapsed=0.002210s checksum=6cf4d8e02d652b62
scattered  e=0.90 size=512x288 saturated=192 predicted=233 actual=43 bbox=0.9609 elapsed=0.019092s checksum=ef91f6cf7f41249b
random5pct e=0.90 size=512x288 saturated=22223 predicted=216 actual=47 bbox=1.0000 elapsed=0.020793s checksum=fd976dae0c08cc92
### OMP_NUM_THREADS=16
sensor-bloom benchmark: size=512x288 threads=16 limit=1.000
central    e=0.00 size=512x288 saturated=3 predicted=1 actual=1 bbox=0.0001 elapsed=0.002165s checksum=aaec29797d030b5a
scattered  e=0.00 size=512x288 saturated=192 predicted=1 actual=1 bbox=0.7751 elapsed=0.002720s checksum=0c52973c56f09383
random5pct e=0.00 size=512x288 saturated=22223 predicted=1 actual=1 bbox=1.0000 elapsed=0.002128s checksum=d489cdf14f756d3a
central    e=0.50 size=512x288 saturated=3 predicted=43 actual=15 bbox=0.0065 elapsed=0.001764s checksum=6625d592f76add42
scattered  e=0.50 size=512x288 saturated=192 predicted=43 actual=15 bbox=0.8433 elapsed=0.012356s checksum=44e39b09a596122f
random5pct e=0.50 size=512x288 saturated=22223 predicted=40 actual=17 bbox=1.0000 elapsed=0.014079s checksum=d8c99ec18949278a
central    e=0.90 size=512x288 saturated=3 predicted=233 actual=43 bbox=0.0513 elapsed=0.002201s checksum=6cf4d8e02d652b62
scattered  e=0.90 size=512x288 saturated=192 predicted=233 actual=43 bbox=0.9609 elapsed=0.030918s checksum=ef91f6cf7f41249b
random5pct e=0.90 size=512x288 saturated=22223 predicted=216 actual=47 bbox=1.0000 elapsed=0.020280s checksum=fd976dae0c08cc92
  • saturated is the number of channels initially above E; predicted is the model's reported predicted_iterations: the conservative decay bound plus the fp guard, clamped to the 4096 hard limit; actual is the number of synchronous rounds run; bbox is the fraction of the frame covered by the final monotonic bounding box. actual <= predicted in every row.
  • The predicted/actual fields and checksum are identical across the three runs above with OMP_NUM_THREADS=1, 4, and 16; only elapsed changes.

These numbers characterize the model on a bounded synthetic frame only. They do not establish any full-resolution or production-render performance.