Hi,
I am an amateur 3D artist, only recently I learned about an easy way to use every Geforce GPU in my system for Eevee renders that saved me a huge amount of rendering time.
My system still uses Windows 7, but as far as I am aware, it works thesame in Windows 10.
Provided your system uses Windows and multiple Geforce GPU's, it can be as simple as rightclicking the Blender icon on your desktop, a dialogue shows up, leftclick "Render OpenGl on" and another dialogue shows up that allows you to launch a Blender instance that will use the GPU that you choosed.
In this way you can create as many instances (obviously each with a different GPU) as you have GPU's in your system, open on each instance the blendfile you like to render, give it a specific framerange and start rendering.
This method seems to work allright, but I did notice some performance issues. I am no expert on Windows at all, but I can imagine that tinkering with an installed application like this can create issues.
Another method seemed to work very well and stable (at least on my system);
I left the installed Blender application untouched and downloaded the portable Blender, available as an option on Blender.org, unzip and copied to my C drive and renamed as Blender eevee with a shortcut to my desktop for easy access.
Then copied & paste the blender.exe and renamed to blender-1 to 4 (capture1)
Open the NVIDIA Control Panel (rightclick in your desktop) select "manage 3D settings" and select "program settings", click on "Add".
A dialogue shows up, click on "Browse", go to the blender eevee directory and select the blender - 1.exe and click on "open". Repeat for every other blender - x.exe (capture2)
Now customize every blender-1.exe, blender-2.exe etc., CUDA - GPUs to set at "none" and OpenGL rendering set at "GPU 1" for blender-1.exe, "GPU 2" for blender-2.exe and so on. (capture3)
When I am going to render a scene in eevee, I open the blender eevee shortcut on my desktop, click-drag select the four blender-x.exe's and open. And voila, four blender instances, each using they're own GPU.
I can now render a single blendfile, using a different framerange for each instance, or render different blendfiles, or render a single blendfile using different camera's, whatever.
Using the simplify option in Blender's render settings, helps improving performance during rendering (capture4) and also check "lock interface" before starting rendering.
Framestepping is easy to use, set to 4 in rendersettings (if you have four GPU's) and just set each instance startingframe to 1,2,3 & 4 (capture 5) However, this frame-stepping seems to come with a (not very large) performance penalty.
It is possible to use headless rendering using the eevee blender-x.exe's as well, but that is a tedious proces using arguments for frameranges, framestepping, different camera's etc. I prefer to just open the UI's for each instance and this does not seem to hurt performance that much.
For large complex scenes, it can be necessary to force shader compilation before you start rendering. Select rendered view in the UI of each instance and wait until this is ready, return to solid view before you hit the render buttons.
Keep in mind;
The scenes that I render, tend to be high on memory usage. Every Blender instance on my pc can require up to 20Gb of memory, that adds up pretty good. Make sure that your pc has enough resources to handle the workload.
Physics simulations must be baked before you can start rendering with multiple instances.
Don't forget to change the render output file location or name when you render a single blendfile using different camera's (that happend to me) you think everything is Ok but the instances are just busy overwriting each others results.
Cheers,
Jeroen