EEVEE MultiGPU? Yes, you can


So I have been working on an animation that consists of 1950 frames which I subsequently rendered in EEVEE using Blender 2.80 and a Dual Xeon, Dual 1080ti setup. Of course it was faster than cycles, but being the impatient person that I am and wondering why really EEVEE couldn’t use both graphics cards (yes, I have read all about why) I decided to just open two copies of Blender and assign the first half of the frames to one instance of Blender and the other half to the other instance.

BAM!

The time per frame slowed by 1/10th of a second, but essentially the final render was twice as fast.

Then I had to look up how Blender was assigning the graphics card and after some searching around I found this post on Blender Artists by Daniel_Paul:

He explained how - with WINDOWS ONLY and with NVIDIA CARDS ONLY, to assign copies of Blender different graphics cards within the NVIDIA control panel AND he created a Windows batch file which will run your animation render through the console (headless) and you can pick how many cards and how many instances to use!!!

So if you have multiple NVIDIA gpus and you want to run EEVEE animations even faster, check out the BlenderArtists link above.

Here are my results:

1950 frames. EEVEE. 1920x1080 PNG RGBA 8 Bit

43:21 - 1 instance, 1 GPU

22:25 - 1 instance, 2 GPU

12:47 - 2 instances, 2 GPU

9:45 - 3 instances, 2 GPU

Attached is an image of what that looks like.

Have Fun!

6 Likes

I believe you’ll gain even more speed by using OpenEXR with PIZ codec instead of PNG. I haven’t tested myself but PNG seems to be oddly slowest and actually taking more space! (Comparing to DWAA codec) Check this out:

3 Likes

So even without 2 instances there is already a boost with 2 GPU’s? intresting.

It almost makes me regert not having Nvidia GPU…

1 Like

Does anyone know if this is possible to do on Linux from nvidia driver 435.17 and xorg-server 1.21?
https://www.phoronix.com/scan.php?page=news_item&px=NVIDIA-435.17-Linux-Driver

Not sure if doing it from application proffiles or something like that.

1 Like

Very cool info! Now I have to see if I can use openexr with premiere !

I experimented with that. It’s not supported by the drivers as is.
You can do it by starting 2 x-servers on two monitors, but I wasn’t able to stabalize the system under those circumstances. And performance was less than good.

1 Like

Well, yeah there’s a boost. half of the frames are being rendered on one GPU and the other half are being rendered on the other GPU. Neither GPU is actually being pushed while rendering though… and that’s why running multiple instances causes the times to drop also. Even at 3 instances, the GPUs on my system were not at a solid 100% usage all of the time.

Hi.
I am testing new PRIME Render Offload (On Demand) on Kubuntu 20.04 LTS (beta), nvidia 440.59 driver from PPA. Multi monitor/multi GPU enabled from my BIOS.
Finally I can use intel iGPU by default and nvidia on demand by following these steps and this xorg.conf configuration:
https://forums.linuxmint.com/viewtopic.php?p=1683387

$ glxinfo | grep "OpenGL renderer"
OpenGL renderer string: Mesa DRI Intel(R) Ivybridge Desktop
$ __NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia glxinfo | grep "OpenGL renderer"
OpenGL renderer string: GeForce GTX 960/PCIe/SSE2

Eevee OpenGL render in intel iGPU and nvidia give results with some differences, so in practice render on both at the same time is not useful. I guess with multiple nvidia cards the results will be the same. Unfortunately I have only one nvidia card and I cannot do tests. But I suppose that with all the new features in new nvidia drivers it should be possible. If this is not yet possible, it would be nice that Linux users with more than one nvidia GPU discuss this in the nvidia devtalk forum.