Very high baseline GPU memory consumption in cycles

So i was messing around with the recently released benchmark from the gooseberry project, and i wanted to see
what kind of quality i could reach using my GPU (GTX 590), which does not have enough memory by a long shot (1.5GB), since the benchmark at default settings requires 8 - 12GB of ram.

But i got it to render by firstly reducing the size of the textures by a factor of 4-8 times and setting the subdivision level to 0 and the child particles amount to 0.1 via the simplify panel.

Now it renders using ca 1400 MB ram, but i still thought that’s a pretty high consumption for this scene, so i tried figure out if there was anything else in particular that was using a lot of memory, but even after i had deleted pretty much everything from the scene, GPU-Z is showing 878 MB of usage (it shows 0 MB when not rendering), and it’s the same story with the default cube scene.

So anyway, i did some comparisons with different versions of blender rendering the default cube.

2.61 - 151MB
2.62 - 168MB
2.63 - 187MB
2.64 - 159MB
2.65 - 273MB
2.66 - 263MB
2.67 - 262MB
2.68 - 276MB
2.69 - 372MB
2.70 - 373MB
2.71 - 397MB
2.72 - 604MB
2.73 - 857MB
2.74 - 859MB

I know this development at least partly can be explained by new features to the renderer, but still don’t understand how it could get this high? I would expect the baseline memory consumption to not be that much higher than the compiled kernel itself, but this is clearly not the case - as the .cubin files are just 2-5 MB in size.

Does anyone know how there can be such a big discrepancy?

Finally here are some renderings from the benchmark, showing the increased quality that can be achieved by simply using an earlier version of blender.

Blender 2.74.1 (child particles at 0.1) approx 1400MB

Blender 2.71 (child particles at 0.25) approx 1400MB

  • As a side note if you want to try the benchmark using the GPU, you should probably turn off MIS for the environment, as there seem to be a bug involving the particular .exr file used and MIS with gpu rendering - on my machine i just get a very dark image if i don’t.

I tested baseline consumption of the 2.17 version of the octane renderer as well, and it showed 136MB, so there might a lot of room for improvements in this area.

Hi, very interesting tests.
You did not write your system specs, driver and so forth.
I have the same problem on Linux but heard from other user it is not on Windows.
Because of memory consumption I sold my GTX 560Ti 448 1,28MB not be able to render anything with it.
Octane use about 30% of memory on Linux so it is not a driver problem and I am a bit baffled what to do.

Cheers, mib

The size of the kernel can have a tremendous effect on how much memory is needed by the GPU (due to the way that GPU programming and GPU architecture works).

Cycles currently uses a single mega-kernel for everything which is a major underlying reason for this, supposedly, we have AMD developers working on a new structure for Cycles that involves the usage of smaller kernel sizes without sacrificing features (which may significantly reduce GPU memory, allow ATI cards to play well, and potentially improve performance for both GPU and CPU rendering).

Thanks for the responses

Here are my system specs:
Windows 7 64bit
Intel Core i7 3770k
Gigabyte GTX 550 ti (used as display device, and disabled as a cuda device)
Gainward GTX 590 (latest driver - 347.88)

Hmm, i did not consider that it could be something with my particular system, so i didn’t think it was necessary to provide system specs. But i did some testing just now on my Acer Aspire V5-573G laptop which has a GT 750m card and i measured a baseline consumption of just 135MB with blender version 2.74 - about the same as the octane renderer.

I would be very interested in seeing what GPU-Z results people get using different devices, in particular GTX 970 & GTX 980 cards.

I have the same problem with a gtx 590 it use alott off memory ( windows 7 - 64 bit )

It seams it is a problem with ancient GTX 500 cards, had this with my GTX 560Ti too.
Will make some tests with my GTX 760 and post here.

Cheers, mib

Donate it to the blender foundation… The cause of this is the large kernel size… that is what is causing the kernel to use up significant amounts of memory… It loads every function up into memory even if it is not used (say you dont use volumetrics, that code is still loaded onto the GPU).

The splitting up of the kernel, has been a big project, initially started by AMD but taken over by the blender developers… it was committed last night. This means that if certain functions are not used, it will not load them into ram.

This is ONLY for OpenCL so far… but it is expected to transfer over onto CUDA / CPU

And sss works fine with gtx 660 but not with gtx 590 —cuda error —