How does Cycles work? What uses GPU memory, RAM and Cache?

Good day to you.
I have a specific question and I will try to explain the situation in detail, so please stick with me there…

It is not targeting any specific problem, though it very much is connected to CUDA and Optix memory problems.
I hope some enthusiasts will be able to help me understand better how Blender Cycles works and even find a solution for some situations.

I use Blender Cycles X (3.0.0) for architectural renderings.
Mostly the scenes are very complex - houses with details behind windows, multiple particle systems outside counting hundreds of thousands of single grass particles on displaced meshes…I am not even talking about the high quality trees in the foreground and low poly scans in the background. All very accurately set to create the perfect shot.

What I am trying to explain is:
We create very complex scenes while working with the highest levels of optimization possible.
We use links, instead of placing objects in the scene.
We use only selected assets to avoid any problems.
Our hardware is decent.

And somehow, after all system updates and HW upgrades… somehow Blender doesn’t catch up and crashes due to CUDA/Optix “capacity of GPU is full” error.

So we render using our CPU.
Now please tell me - when the scene is being loaded when I hit F12 to render - where is it being loaded? On RAM? On GPU (we have 8GB there) Or does it load the scene on the allocated space for memory cache?
How does Cycles work?
Does it really need to use all 8GB of GPU and crash?
Why is it not helping itself with the memory of 64GB of RAM or 1T of SSD?
This problem is crucial because we cannot use our RTX 2080 for rendering most of the time…
Would having two GPUs inside be the solution?

Even if I forbid all the complex assets to be rendered (no particle systems are ON, no trees, no complex meshes = if the file is new with geometry that is turned ON, it should be able to render using GPU) Blender also doesn’t render with GPU! Again - error. Why?
This “switch off” logically, should exclude all “heavy” objects and it should render on GPU… or do I just not understand the software?

I will be glad for any insights that will teach me about Cycles more,
I love the software, don’t get me wrong.
I am just trying to understand it better, so we can use GPU even with complexity.

Thank you.
S.

Can’t really help you with exactly what Cycles is doing internally, but I can recommend you to try command line rendering instead, some memory issues, crashes etc will be solved that way.

This will be no complete answer (especially not about cycles… wait :thinking: no it took me some time for all this text) but a quick one :wink: :

  • The “tradional” CPU-rendering does the work for every single pixel one after the other. If you have more computers or more CPU’s or more cores this gets faster. Not by the factor of additional hardware because there is also loading the data from disk/SSD and pre and post work aside the pure mathematical computations.
  • GPU-rendering on the other hand can do hundreds and thousends of computational operations in parallel… but the real computional part has to be compiled and loaded completely into the video ram…

So as the 3D scenes gets bigger and bigger the VRAM isn’t just enough…

There is a nice video about this : Mythbusters Demo CPU vs GPU … the first draws the picture… the second just spitts int on the canvas (and does a great deal of a mess). And now imagine to do it with more different colors a higher resolution (or size)… For size: both need a a larger canvas, the first solution can do it if you have one color mixing brush/gun and some aditional gadget for the Z-axis… the second one needs hundreds or thousends of mixing brush/gun, special pressure pipes for smooth paint supply and bigger theater…

1 Like

Wow, thank you!
That was helpful!