Bucket sizes - how to determin optimal size?

   1456   5   1
User Avatar
Member
862 posts
Joined: Oct. 2008
Offline
I often see notable differences in render times with different bucket sizes. What's a good way to understand it and find optimal settings?
--
Jobless
User Avatar
Member
7816 posts
Joined: Sept. 2011
Offline
never have I ever changed bucket size
User Avatar
Member
862 posts
Joined: Oct. 2008
Offline
jsmack
never have I ever changed bucket size

I'm working on a scene where an image rendered with 32 pixel bucket has nearly double the render time of a 16 pixel bucket. Plenty of ram left on both settings, so I'm wondering what's going on.
Edited by Soothsayer - April 20, 2023 13:18:56
--
Jobless
User Avatar
Member
7816 posts
Joined: Sept. 2011
Offline
Soothsayer
jsmack
never have I ever changed bucket size

I'm working on a scene where an image rendered with 32 pixel bucket has nearly double the render time of a 16 pixel bucket. Plenty of ram left on both settings, so I'm wondering what's going on.


Is that with Mantra? I experimented with bucket size with mantra and never saw a pattern. some scenes were faster with bigger buckets others slower--so I left at default. What render time spread are you seeing at 2x, 5 seconds vs 10 seconds or 1 hour vs 2 hours?
User Avatar
Member
862 posts
Joined: Oct. 2008
Offline
After conducting several tests, I have some insights into the rendering process.

It seems that each bucket corresponds to a CPU core, and as individual buckets complete their rendering tasks, the overall CPU utilization decreases. If there is a single remaining bucket with a render intensive element in it, you have to wait for that specific core to finish the task. Consequently, if your bucket is large and contains a particularly slow element, it leads to idle time.

The first graph below illustrates the render times against varying bucket sizes for an image containing textures, surfaces, and both emissive and non-emissive geometry.

In contrast, the second graph represents the same image rendered at a higher resolution. In this case, the render times are much more closely clustered, suggesting a more efficient process.




The second graph shows the same image but at larger resolution. The render times are much closer together in that case.

I wonder if this means the process could be automated, either by calculating an optimal bucket size by analyzing coverage of the image vs cores at the beginning of a render of by adjusting it dynamically during the render process.

Edited by Soothsayer - April 21, 2023 07:45:08

Attachments:
smalljpg.jpg (18.9 KB)
image(1).png (33.1 KB)

--
Jobless
User Avatar
Member
165 posts
Joined: Jan. 2019
Offline
The issue is even worse on high-core count machines that often have lower clock speeds. VRay solved this issue with dynamic bucket splitting back in 2014! I don't know any other renderer that does this. Maybe if they have a patent on the technique.

https://youtu.be/kq7PG35MM-8?t=29 [youtu.be]

They also updated it not so long ago, where buckets that have already started rendering can be split if idle cores become available.

https://www.chaos.com/blog/how-adaptive-bucket-splitting-speeds-up-v-rays-rendering [www.chaos.com]

https://www.youtube.com/watch?v=O05N7hnuSjM [www.youtube.com]
Edited by daviddeacon - April 21, 2023 08:15:43
  • Quick Links