345 — On-the-Fly Power-Aware Rendering
I was sitting in the park last winter and started getting cold, so I fired up a render job in Blender and sat the laptop on my lap to warm me up.
Rendering is an energy-intensive process, and one of the biggest limitations is that it’s not clear exactly how power-intensive a render will be until it is in progress. A simple scene with simple geometry can have outrageous render-time when complex materials are applied. Likewise, complex materials and complex scenes can still have — in certain cases — very short and simple renders.
This unpredictability becomes particularly problematic when rendering on a battery-powered device, where battery life is a serious consideration — or on devices for which rendering is not the only thing a user cares about (such as on a phone).
One strategy is to model the power consumption of a GPU or rendering device based upon the power cost of each architectural unit. This, however, gives only an architecture-specific render-power estimate and does not translate well across machines. Instead, the authors of this paper develop a technique that estimates power usage based upon a renderable scene, and then converts this into on-the-fly budgeting for each stage of the render process in order to remain within a provisioned render power budget. That is, the energy allocated to each stage of the render process can be scaled to maximize render quality without overusing power.
I imagine this sort of technology has applications outside of graphics as well, where power consumption on certain continuous-refinement computation tasks is equally important.