Dual GPU Cycles realtime rendering: does it work?

Based on tests with my configuration (GTX Titan + GTX 560) it seems that Cycles doesn’t take advantage of both the GPUs in the realtime rendering. Am I wrong? Is there a way to make them work together in realtime?

I also wonder if this problem (if it’s real) doesn’t happen with a dual GPU card like GTX 590 or Titan Z.

Anyone could explain? Thanks.

As far as I know, Blender does in fact work with dual GPU’s.
However, when you have two cards, you don’t get the speed that is That card + That card. You lose some speed there.
Maybe you didn’t select both of the cards in the preferences?

I selected them in Preferences, infact in F12 rendering they work both. But in viewport, looking at my GPU monitor gadgets (one for each card) it uses only the Titan. In my case there is no much difference. But if I want to be more productive (buying for example two Titans) I want to be sure that it uses both for realtime rendering. If not, it’s better to buy a Titan Z, if you say that is completly used.

Anyway, any chance they make two GPUs work together in realtime like in final render? Is it technically possible?

I have 2 cards, one for the viewport (gtx570) and one for the render (Titan).

The both cards can work on a single render, but the little one would increase the render time if the tiles are to big. 256 is the best choice.
For realtime rendering, on a little test :

Titan : 1m05
Titan + 570 : 1m07

So it’s not interresting to use the both cards on realtime rendering.

Ok, that means it doesn’t use them both in realtime. Thanks.

Hi!

I have got 3x GTX Titan card, and it works great. Blender use all 3 of them while rendering.
(If selected of course)

//W

But also in realtime? You didn’t specified.
If it uses all 3 Titans in realtime, it means that they must be the same card to be used, not different cards.

Moved from “General Forums > Blender and CG Discussions” to “Support > Technical Support”

People replying, please note that the OP is not referring to rendertime usage of both GPUs, but GPU usage in the 3D View.

Hi, i stumbled over the same issue few days ago. I have one GTX 590. When i select dual gpu in the preferences, realtime render slows down like i´d render on a cpu. But i also have two screens and i think it´s got somthing to do with displaying and rendering at the same time, the interface and displaying slows down like hell. On my other machine with 2x590 i have that exact problem when i am using all GPUs for realtime render with octane. I guess if you use 2 Titan Z and keep one GPU dedicated for display, the other three still can go full on in realtime render.

Lell can correct me if I’m wrong, but when referring to “realtime render”, I think it’s specifically a reference to OpenGL performance… not Cycles or Octane or any non-realtime renderer.

No, I’m sorry, I reffer to Cycles CUDA realtime rendering.

But I think the topic question should be turned into
“Is it better a Single Titan Z (interior dual GPU card) or two Titans (single GPU card x 2) for realtime rendering purposes?” Exluding an ipotethic 3rd GPU for viewport visualization.

Ah… my mistake. However, technically speaking, you should know that Cycles is not a realtime renderer. To be more clear, I think you’re referring to the Cycles preview render in the 3D View.

Yes I do! I thought it was the same concept. Could you explain me the difference between realtime renderer and the preview render?

I’m noticing something similar here. It does use both in my gpu monitor, but doesn’t use them fully…

with some quick informal tests in the preview window i get these times:
560ti = ~37sec
750ti = ~21sec

560ti+750ti = 27sec :frowning:

In another test case:

560ti = ~17sec
750ti = ~13sec

560ti+750ti = ~9sec

so, it seems to be a bit more complicated than I had hoped…

‘Realtime’ render often refers to the OpenGL viewport, often with GLSL/Textured options on, real time meaning each frame renders in real time like a game engine might (less than a second for the entire frame).

The Cycles viewport allows realtime viewing and modifying of the scene and immediate feedback, but the render itself is certainly progressive and can take seconds-minutes to complete a frame.

I have 3 GPUs, not in SLI. I happened on a great discovery while testing to answer your question. Blender viewport performance in complex scenes is better using just the fastest card than it is using all three (at least for the 800 MB scene I used for 64 bit Blender on Windows 7). But as expected rendering a frame is fastest using all three cards.

780ti SC 3GB Video memory
660ti SC 2GB Video memory
660ti 2GB Video memory

Viewport render time for 50 samples with “User Preferences->System->Compute Device” set to:

CPU = 1 min 58 sec
660ti = 41 sec
660ti (2x) + 780ti = 18 sec
780ti = 14 sec

Look at that! Using just one card is faster than all three for the viewport. And by the way, the cycles preview is A LOT FASTER than wireframe, even in full screen.

For comparison, a roughly same size tile-rendered frame in cycles:

660ti = 41 sec
780ti = 19.17 sec
660ti (x2) + 780ti = 16.25 sec

One final bit of data–building the BVH takes about 8 sec for this scene, but only about 3 sec for the viewport render. Not sure why the difference.

EDIT: Just read SterlingRoth’s similar analysis. Looks like more GPUs usually helps render times, but may or may not help viewport performance on a scene by scene basis.

Uhm, ok, thank you all for the tests. So the situation is not yes-no, but depends from the scene and other unknown parameters.

I think that there’s the need of a cycles viewport benchmark scene. Well, we could use the usual BMW scene. There’s the problem of the resolution though. There must be a way to have a 3D view with a certain resolution, then start the realtime render and take the time with different GPU or CPU configurations.

I tryed do define a standard for a Cycles viewport preview performance benchmark.

I made the test on 1920x1200 screen.
To do the test open the Mike Pan BMW benchmark scene.
Click on the border option in dimension panel, so only the frame will be rendered.
Go full screen with alt-F11.
Set preview samples to 100.
Expand the 3D view with shift-space.
Fit the frame to the view pressing the Home key on the keyboard.
Now you should have a render area of about 1920 pixel width.

Now go in Rendered mode and wait for the 100 samples to be reached and read the time it took.
Do this with each configuration you could set up.

If you have a different screen resolution, you will need to do a proportion to compare your time with a full HD time.

I think that this could work and could be a good test for viewport configurations.

I did this with a nVidia Quadro K4000 and took 2:41 at 100 samples.
I’ll try with CPU later.

Attachments


Time with the same setting on a dual Xeon with total of 32 thread: 2.26. Didn’t supposed the CPU does better than the GPU! It used the CPU from 50% to 70%. Didn’t expected.

As you noted, this proposed benchmark will lead to inconsistency based on screen resolution, but I followed the steps anyway. My 1920x1080 screen creates an 1818x1023 render area. Your render area is 1914x1077, or 1.108 times more pixels, so my times should be roughly 10% faster than with your monitor.

660ti(x2)+780ti = 36.67 sec
780ti alone = 32.54 sec

481 MB scene on all three cards vs. 160 MB on just one (3x as much for 3x the GPUs, that makes sense but maybe the memory usage has something to do with it).

REF: http://imgur.com/Ni7Qvr1,Hi0W0GB