Eevee Multi GPU


(yfile) #1

I’m impressed with Eevee’s performance, but I have a couple powerful graphics cards in my computer and I’m sad when I see they do nothing when I’m hard working.
Is it any hope and possibility for Eevee Multi GPU engine? Perhaps a brand new Vulkan/Metal version?


(English is not my native language) #2

Hi.
For the moment you should use the most powerful GPU to handle the display.

18 - What PC configuration would you recommend to work comfortably with Eevee?

A - A single large graphics card. Lots of VRAM. Multi GPU is not scheduled for tomorrow.


(yfile) #3

’ Give someone an inch and they’ll take a mile’
I have a GTX1080Ti. It would be nice to make 4x 1080Ti useful in Eevee…
What’s more - I think it’s a necessity to make Eevee a real groundbreaker.


(SterlingRoth) #4

multi gpu rendering is significantly more complicated, requiring a large amount of developer effort for a small group of users with exotic hardware configurations.


(yfile) #5

TRUE

You are totally WRONG. Multi GPU (on site or render farm) is absolutely fundamental for large Cycles projects.


(SterlingRoth) #6

For cycles, Yes indeed. But breaking a frame into tiles is much easier for an offline renderer like cycles. For a realtime renderer, that is a lot more complicated.


(LordRaven) #7

There seems to be a general misunderstanding about how this works:
Multiple graphic cards CANNOT work together to render a single frame using rasterization (which is what Eevee uses).
This only works for cycles because the calculation process (via CUDA/OpenCL) is broken down into fragments and each card calculates it on it’s own!
That’s why you see different parts of the render image start/finish at different times. This is NOT possible for rasterization.

Eevee always uses the graphic card to which your monitor(s) are connect to via cable(s).

The only way you can use 2 cards at the same time is by using SLI (or AMDs equivalent) and that requires 2 (or more) compatible cards connected via a special cable. The GPU driver then spreads out the work onto these cards. OpenGL (graphics API Blender uses) is actually unaware of this. So basically this nothing the blender developers can ‘program’, it’s something done by the hardware/driver if you have the correct setup for it.
Just having 2 or more cards installed is not enough as it is for cycles.


(yfile) #8

It seems that you are wrong:

“Unlike SLI and Crossfire of old, where the task of divvying up the rendering between GPUs was largely handled by the driver, this support gives control to the developer.”

Dear Awesome Blender Developers:
Go to the MultiGPU for Eevee and change the world much more. Yes you can.


(Grzesiek) #9

Seeing the limited budget and what else they have left to complete, this is probably not going to happen anytime soon.

Also Vulkan is NOT supported in Blender or Eevee. OpenGL is. That would again require another update/rewrite of the render engine, and would drop off a lot of hardware support as well.

Like mentioned above, this will require developer to work on this, which is something that is of limited resource.


(yfile) #10

Of course Vulkan is not supported now but I think it is a must. OpenGL has no future.
Any graphic card which is usable in Eevee would work with Vulkan so no “drop off a lot of hardware”. I’d say more: transition to Vulkan/Metal would increase the performance on any reliable graphic card. So no drop off at all.


(SterlingRoth) #11

Well, don’t hold your breath. Transitioning off of openGL would require about as much development work as the 2.8 transition is taking now.

I would be surprised to see a vulcan version of blender within the next 3 years.


(yfile) #12

I know its not easy but its exciting. 3 years sounds not bad and 2 years would be really great.


(sozap) #13

Dear Awesome Blender Users:
Go learn coding for Blender and change the world much more. Yes you can.


(Jason van Gumster) #14

For what it’s worth, I brought this up early when they first started discussing improvements to Blender’s viewport render (pre-Eevee) since I regularly do large render jobs using the current OpenGL renderer and would like to take advantage of multiple GPU devices (even the ability to specify a single GPU device from the command line so I would just launch four instances of Blender; one per GPU). The developers are aware that this is a desirable feature and are interested in finding a way to support it. The current complication is that in order to do an OpenGL render, you typically need an OpenGL context… that usually only happens if the GPU device is drawing to the screen; and usually only one device is dedicated to that task.

TL;DR the devs are aware and want this feature, too; it’s just not easy to do.


(Grzesiek) #15

So poentially each GPu connected to seprate screen, would give the context. Or for example if a screen has mulit input connect other cards to the inputs that won’t be used… Still hope they figure out a better solution.


(yfile) #16

I connected monitors to a different graphic cards and fired up two separate instances of Blender but still just one (main) graphics card is under load in Eevee. It is not what I expected. Perhaps it depends on the OS (my is macOS) - I wonder how it works in Linux or Windows.


#17

If they port Eevee to Vulkan then yes it should be no problem, don’t spect that to happen soon.