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:
1 parent
8cf6106127
commit
8741597d9d
48 files changed
+895
-4
No files matched your search
@@ -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;
|
||||
|
||||
Reference in new issue
Block a user