Page MenuHome

Cycles X: Multi-device re-balancing
ClosedPublic

Authored by Sergey Sharybin (sergey) on Jul 1 2021, 11:14 AM.

Details

Summary

This is an initial implementation which seems to give better
device utilization here when using two non-matched GPUs, as
well as multi-GPU and CPU.

General idea is to balance amount of work based on an
observed performance of devices, and "re-slice" the big tile.

Things which are known to be not final but considered a further
development:

  • The balancing algorithm might need some tweaks for the objective function and weight modification to converge to the ideal balance quicker.
  • The "re-slicing" might also be optimized memory-wise.
  • Headless rendering needs to give few iterations of smaller works to allow multi-device to settle down in the balance.

The balancing logic is in own little file, which simplifies
process of experiments.

Diff Detail

Repository
rB Blender

Event Timeline

Sergey Sharybin (sergey) requested review of this revision.Jul 1 2021, 11:14 AM
Sergey Sharybin (sergey) created this revision.
Brecht Van Lommel (brecht) added inline comments.
intern/cycles/integrator/path_trace.cpp
518

VLOG(kLogLevel)?

542

VLOG(kLogLevel)?

intern/cycles/integrator/work_balancer.cpp
40

an unit -> a unit

This revision is now accepted and ready to land.Jul 1 2021, 8:56 PM

Fix typos pointed by Brecht.

Missed some commits in previous update.
Sorry for the noise.