I'm trying to render an animation, I can provide the .blend if necessary.

The problem is that if I render each frame as if it was a single render, it works fine. However, if I render it as an animation (multiple frames) I get OutOfMemory error when it reaches a certain frame (which I can render fine if I render just that single frame).

I'm monitoring the GPU memory usage and it seems that the memory used in one frame is not being freed after the render is done. Is this the default behavior? If yes, is there a reason for it? If not, what could be causing it?

I'm using Blender 2.77 on Windows 10. My GPU is Nvidia's 980TI.

EDIT

I found the actual problem. It was an add-on that supposedely shouldn't do anything related to rendering. It's called Perfect Shape. I disabled it and all renders worked fine, motion blur or not.

  • 2
    I had a similar issue a while ago, where the GPU memory was not released and rendering sequences would fill up the vRAM. In my case I was able to fix it by resetting blender to factory default. – cegaton Apr 26 '16 at 0:09
  • Are you rendering as video or as an image sequence? What are your settings for motion blur? Can you post a screen grab of your User _preferences->System settings? – cegaton Apr 26 '16 at 0:13
  • 2
    You might want to report this to the devs – gandalf3 Apr 26 '16 at 6:28
  • 2
    @cegaton I think you nailed it. I wasn't supposed to be using motion blur for this piece but it was turned on. I turned it off and now the rendering is working fine. Although now I'm not sure this should be the case even with motion blur, This report seems to suggest it shouldn't increase the memory usage like it is. Apparently it should have been solved around 2.66. I'll try resetting the settings anyway – vtr Apr 26 '16 at 12:19
  • Indeed, this appears to be a known bug with that addon. If you'd care to add an answer (since you discovered the cause), go ahead :) If not, I can. – gandalf3 Apr 27 '16 at 1:58

Might be a bug or a memory leak.

Blender does free unneeded memory as efficiently as it can, whoever it probably doesn't flush all memory when rendering an animation, as that would be highly inefficient.

There are immutable things that don't change between frames like geometry, materials, texture data, etc. and re-sending that unchanged data to the GPU every single frame would be a very big waste of time and resources and be very inefficient.

As such Blender tries it's best to be smart about it and keep as much relevant information in memory as it can. That being said memory management is probably a very hard task to do efficiently, and many times unneeded things are erroneously left behind. It's what I believe is called a memory leak (I'm not a programmer, I am hoping someone more enlightened in the matter than me will clarify or correct me here)

Over the course of rendering several frames those things build up and cause memory to reach it's limit.

That can probably be considered a bug and might be worth reporting to the tracker, I think. Although the chances of solving it are probably slim.

let's see what other have to say about it

I have the same problem. When rendering a single image Cycles used 1.2 gigs of memory and did not free that memory when finished. I then rendered the image again and Cycles just added more memory on top of the 1.2 gigs and bumped it 1.5 gigs. Did this a couple of times and made it to 2 gigs of memory still being allocated after the single image render was finished. I have radeon r7 360 gpu and at this point I can not render out any full animations without running out of memory. In fact my entire system crashed several times. I am using Blender 2.78 with 8 gig ram and 2 gig gpu with a 12 gig cache. The problem is Cycles is not clearing memory after the render.

  • Update: Under Performance I set Dynamic BVH to Static and unchecked ' Use Hair BVH' and this seems to stop all the memory usage. The memory stayed under 600 meg for the single image. I will try an Animation to see what happens.( The single image was 1920x1080 and samples 200 with only 4K verts in the object) – mike2008and2008 Oct 12 '16 at 11:14
  • This doesn't happen for me with a GTX 460 (CUDA) on Linux. OpenCL support is relatively new and unstable, so it is very likely a bug. I'd submit a report and see what the devs think. – gandalf3 Oct 12 '16 at 14:55

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.