Deadline Blender Multi GPUs with Evee

Hello everyone, I’m trying to configure deadline blender to split frames / task by GPUs
There’s a way to manually do it with multiple blender.exe and batch script :

So here’s my idea :
Is there a way to override plugin/software path per worker ?
Creating 4 worker for example on one machine with 4 GPUs each one using a specific blender path and so a specific GPU to render.

Rendering with evee is super fast but it’s even faster multi tasking / multi GPUs.
For example, a 1000 frames animation renders nearly 3 time faster with 10 tasks simultanously instead of 1 task. And this using only one GPU :slight_smile:

Thanks for any help !

There isn’t a built-in way to override software path per Worker. You could look at changing the Blender application plugin’s RenderExecutable function to point at different blender installs, but I’m not sure how you’d know which to point at.

I’m not experienced enough with Blender to make a solid guess; I know we’ve got this script that forces Blender to use GPU. In there there’s a call to bpy.context.preferences.addons['cycles'].preferences.devices[0].use= True that appears to set the 0th (or first) GPU as the one to be used. It’s all Cycles-cetric, but if it’s possible with Cycles I’d imagine you could do the same with Eevee?

Either way I’ll see about adding information about Eevee in our feature request for GPU support in our Blender plugin.

Hey thank your for your answer,
Yup it’s all easier to config with Cycle.

I have seen your script and tried to use it for Evee already without success.

Evee as nothing built inside blender to control wich GPU is used to render, apparently the reason is that it is using OpenGL and I’m not really well informed on the technical side of this, but this make impossible to script anything when blender is started or in command line rendering. The only way is using nvidia control panel to assign a gpu to blender.exe or right click “Render OpenGL on” → gpu desired (when a right click start is possible I wonder why it’s not possible to add an argument when starting render from command line but anyway…)

Maybe it’s possible to add a variable in deadline plugin/software path ?
Or customize blender plugin somewhere to use blender1.exe for every odd frames and blender2.exe for every even frames (kinda really not clean way but I don’t know what to test).

Or maybe something like a way to add user folder path variable for plugins / software like
C:/users/%workername%/blender

I hope they just add GPU control in Evee just like Cycle but is seems not to be something coming soon as this “problem” is here for multiple years already.

Sorry for the long post :smiley:

Alright so simple solution here, I added an Hyper-V virtual machine to my workstation, GPU passthrought working as expected when starting blender via remote desktop.
I added the VM as deadline client, worker shows up but render command fails :

Warning! Using result of ChoosePixelFormat.
Implementation unexpectedly missing WGL_ARB_extensions_string.  Probably a libepoxy bug.
Win32 Error# (3221684230): <no system message>
Error   : EXCEPTION_ACCESS_VIOLATION
Address : 0x0000000000000000
Module  : 
Warning: No OpenGL vendor detected.

But using the same full command when on remote desktop inside windows cmd blender is rendering fine… don’t know why and I guess it’s a different problem from OP now.

EDIT: FIXED by running deadline launcher as admin on desktop and not as a service
But it seems that I need to keep remote desktop opened for OpenGL rendering to work :frowning:

So for anyone else who wants deadline to render multi-gpu using Evee, the solution for the moment is to run a VM per GPU, a bit of process power lost but still faster in the end and easy to manage multiple project evee multi-gpu without manuall bat / frame file config.

3 Likes