Eevee renders faster with multiple sessions open on the same PC | Can't it be a feature!?

EDIT:
@DShot92 has shared a script that accomplishes the case presented below:

@DShot92 Has the script available in Blender Market, thank you very much! Great price too! :slight_smile:

Hello friends!
In my current project, I noticed a peculiar thing.

Letā€™s say we have just one workstation with 64Gb of main ram, a GPU that has 12Gb of ram and one animation to render with the following specifications:

  • 900 frames long;
  • Uses 4 Gb of video ram;
  • takes 30 seconds to render each frame.

Now, what surprised me, to begin with, was the very low resources I was using to render it. Most of the PC wasnā€™t doing much and didnā€™t feel particularly tired.

So I experimented with opening a second Blender with the very same file loaded.

  • Blender A ā†’ renders frames from 0 to 450
  • Blender B ā†’ renders frames from 450 to 900

Was expecting a major slow down in both Blendersā€¦
But such did not happen, it kept rendering each session at 30 seconds by frame! So I had just reduced the rendering times to half.

What do we do when such a thing happens!? We open a 3rd Blender of course! :slight_smile:

  • Blender A ā†’ renders frames from 0 to 300
  • Blender B ā†’ renders frames from 300 to 600
  • Blender C ā†’ renders frames from 600 to 900

And guess what, because it still has available video ram 4*3 is effectively 12Gbā€¦ it kept rendering all 3 sessions at 30 seconds by frame!
Iā€™ve therefore reduced to 1/3 my animation render time!

Now the obvious question is:
Wouldnā€™t be possible to automate this in the same blender session, like using some kind of virtual sessions, so that instead of taking 30 seconds by frame it would take only 10 seconds by frame?
This would use the same video ram, the full potential of the graphic card, but would save the CPU ram of the need of having 3 Blender windows open.

Makes any sense!? :slight_smile:
As long thereā€™s free memory why doesnā€™t Eevee load more than one frame at a time on an animation!? Seems that it could load 3 just fine in my case!

8 Likes

Yes, tick placeholders and untick overwrite checkboxes in output:

ŠøŠ·Š¾Š±Ń€Š°Š¶ŠµŠ½ŠøŠµ

Manual even references this as ā€œprimitive renderfarmā€:

Hummm! Thanks! But ainā€™t this for multiple machines!?
Iā€™m using the very same workstation, just with 3 Blender open at the same time on it.
ā€¦ My description wasnā€™t clear, sorry! Iā€™ve improved it a bit now!

You can also use that with multiple Blender instances on the same machine as long as they all point to the directory where your files / placeholders are.

1 Like

Just on a side note -when- rendering one scene on multiple machinesā€¦

Blender does NOT lock a blend file within the OS, so a accidental file save with a change on one of the many machines will be possible. ā€˜Normallyā€™ a app and OS will lock the file, so accidental changes cannot happen when a file is opened twice or more.

Thanks for the feedback!
But what surprised me the most was really the fact I could render things 3 times faster on the same computer :slight_smile: Soā€¦ why not use all that PC power on the original file!?

Eevee canā€™t deal with tile render right!? :confused:
But couldnā€™t it process 3 (or more) frames at the same time, as long thereā€™s memory available?

It is a interesting find indeed.
With CPU rendering, Blender would use all available cores and RAM if possible, so a second Blender would be dog slow to render.
Not sure how Eevee is dealing with this on GPU level, but it looks like the VRAM and GPU rendering has ā€˜room to spareā€™ to render all three at once on the GPU.

1 Like

Yeah, seems that itā€™s exactly that! :slight_smile: As long it has Vram it will renderā€¦
ā€¦but why has the graphic card room for processing all 3 and keeping the same render speed!?
This means that the graphic card (in my case an Nvidia RTX 3060) has a lot of parallel processing power that ainā€™t be used :face_with_raised_eyebrow: most of the graphic card during a single Eevee render seems to be sleeping :yawning_face: what a waste!

By the way, all this is going to be fixed in Eevee Next. Itā€™s a known thing that Eevee doesnā€™t fully utilize the GPU or multi-threading, hence the rewrite theyā€™re working on

1 Like

Haaaa! Thatā€™s great news! :smiley: Awesome!

1 Like

Yeah, the current Eevee is more of a minimal viable product than a final version. Donā€™t get me wrong, itā€™s incredible, Iā€™m a huge fan of Eevee. It just has never officially been ā€œfinishedā€. I donā€™t remember the whole story of why Eevee took a back seat to geometry nodes, other than ā€œeverything nodesā€ is a huge priority for the foundation, but luckily Eevee Next is being actively worked on right now

1 Like

Eevee wastes a lot of resources and this has been discussed before as well as running multiple instances of Blender to get around this problem. It should be done in some dirty way before Eevee Next to be able to run multiple rendering instances within Blender project with a single click. I think it should be fairly easy to do such an addon. Unfortunately I am not a coder.

1 Like

I would definitely use such an add-on :slight_smile:

1 Like

For Eevee Next for PC you will have to wait for a very long time. Mac users are probably in a slightly better situation, because Apple is involved in Blender Cycles/Eevee development. Anyway in a meantime multiple instances rendering should be build into current Blender version.

AFAIK, EEVEE never took a backseat, it just that bugfixing issues like the OP mentioned requires a full rewrite, due to the nature of GPU rendering itself. Also fixing and/or adding certain features will require some modern GPUā€™s, and thus, EEVEE next will not be limited to openGL 3.x anymore. Also notice that no render engine of any kind will ever be a finished work, since research is ongoing for several features people want/needs for production use.

GeoNodes, by their nature, is orders of magnitude easier to code than a physically based GPU render engine, so itā€™s not surprising that more developers are on board on this project. Render engines (GPU or not) requires certain knowledge of math, physics, optics and image processing that not every developer has, and for GPU rendering, also requires quite a lot of knowledge of GPU tech, and itā€™s limitations. Thatā€™s probably why thereā€™s only one developer working on EEVEE.

1 Like

Yeah! There are a lot of people that have old hardware (me included a few months ago :sweat_smile:), so thereā€™s always that need to balance features with compatibility!

Meanwhile, Iā€™ll just keep todayā€™s discovered method of opening multiple blenders! I didnā€™t know this had already been discovered :slight_smile: For me, it was a shock!

So,ā€¦ (please explain)

I Open MyProject1.blendā€¦

Then what?

Do I Open MyProject1.blend AGAIN? (and again)?

Or, Open 1 or 2 random projects?

Thanks

EDIT: O, and do I render all of them at the same timeā€¦ or just MyProject1.blend.

Hey there!
Let me see if I can clarify :slight_smile:
Letā€™s say that ā€œMyProject1.blendā€ is an animation with 1000 frames.

Step A:

  • You open ā€œMyProject1.blendā€ ;
  • You set it up to render from frame 1 to 250 and press render.

Step B:

  • You open again ā€œMyProject1.blendā€;
  • Set it up to render from frame 251 to 500 and press render.

Step C:

  • You open again ā€œMyProject1.blendā€;
  • Set it up to render from 501 until 750 and press render;

Step D:

  • You open again ā€œMyProject1.blendā€;
  • Set it up to render from frame 751 until 1000.

And thatā€™s it! Enjoy a 4 times faster render! :slight_smile:

By the way, no need to set different frame ranges in the different Blender instances. At least I assume thats what Format64 was talking about above. Just uncheck Overwrite and check Placeholder. That way before a frame starts rendering, the (empty) output image is created. Once rendering completes, the (finished) rendered frame replaces the empty file. Since Overwrite isnā€™t activated, the other Blender instances will skip each frame thatā€™s already being rendered by another instance.

At least thatā€™s how I understand it (and how other software does it)

1 Like

It is indeed! :slight_smile: Iā€™ve used it before for one of the companies I worked for.
We rendered in a render farm of 6 computers if I remember correctly, and that would do exactly what you describeā€¦ the thing is that if one frame fails, youā€™ll then have an empty image file.

We had a lot of frames failing, so we often ended up with a lot of empty files that we had to delete by hand :slight_smile: Thatā€™s why I donā€™t enjoy that option very much!

2 Likes