Page MenuHome

Cycles X: Tweaks to the multi-device balancing
ClosedPublic

Authored by Sergey Sharybin (sergey) on Jul 13 2021, 2:43 PM.

Details

Summary

There few ideas with this change:

  • Base on equalizing actual time devices are spent rendering, rather than trying to estimate this via performance-per-unit-work.

    This gives better estimate and covergence than the old calculation on the pabellon.blend.
  • Perform first re-balancing based on accumulated statistics after a short period of time rather than after first sample. This allows to accumulate a more accurate statistics.
  • Perform re-balancing more often even in the headless render when the balance is not ideal yet.

There are some other changes, like perform rebalancing before path
tracing. This way it seems to be easier to write logic in the
scheduler.

Headless render on RTX 5000 GPU and i9-11900k CPU:

                              new                           cycles-x
bmw27.blend                   14.8814                       20.0281
classroom.blend               30.025                        26.9318
pabellon.blend                13.1679                       12.6133
monster.blend                 16.4408                       16.3826
barbershop_interior.blend     22.83                         19.9255
junkshop.blend                28.7097                       27.2703
pvt_flat.blend                24.7341                       21.8464

F12 render on the same configuration:

                              new                           cycles-x
bmw27.blend                   13.5106                       13.9074
classroom.blend               31.3891                       31.7155
pabellon.blend                12.3674                       49.053
monster.blend                 14.4754                       13.6263
barbershop_interior.blend     24.8804                       23.999
junkshop.blend                29.1324                       27.267
pvt_flat.blend                25.6206                       22.6731

While this helps a lot for the pabellon file, other files seems to
experience a slowdown. It is a bit hard to find a good balance
between how often to perform device load rebalancing and how occupied
to keep the devices.

There is also some measurable deviation in the render times, depending
on previous load and such. For example the pvt_flat.blend deviates
between ~23 and ~27 seconds. Probably something to do with thermal
profile and the fact that we allow to balance quickly and then schedule
a big chunk of work to render.

Not totally satisfied, but seems that overall this is a better
heuristic.

Diff Detail

Repository
rB Blender
Branch
cycles-x_balance (branched from master)
Build Status
Buildable 15793
Build 15793: arc lint + arc unit