Ray: Balance movie tracing with dynamic chunks

Schedule ray-pool advancement in dynamic chunks of 32 slots to distribute frame-grouped active rays across workers while preserving stable endpoint destinations.

Add 1/4/16-thread lens-map equivalence coverage and document schedule comparisons with complete commands, input data and original logs. The 393-frame 64x36 production-source benchmark improves from 62.13 to 38.69 seconds with byte-identical PNGs and lens maps. Release and Debug test suites pass.
This commit is contained in:
wyj committed 2026-09-06 15:56:37 -04:00
1 parent 8cf6106127
commit 8741597d9d
48 files changed
+895 -4

No files matched your search

+5 -1
View File
@@ -65,7 +65,11 @@ void ray_pool_activate_in_time_range(RayPool *p, const MetricSlab *slab) {
void ray_pool_advance_active(RayPool *p, const MetricSlab *slab,
const GeodesicTraceConfig *config) {
#pragma omp parallel for schedule(static)
/* Samples are grouped by frame, so a time slab activates only part of the
* pool. Give workers bounded chunks instead of one contiguous frame range;
* dynamic assignment also balances varying strong-field integration costs.
* Pool slots stay stable for endpoint installation after the slab sweep. */
#pragma omp parallel for schedule(dynamic, 32)
for (size_t i = 0; i < p->count; ++i) {
if (p->status[i] != RAY_POOL_ACTIVE)
continue;