1
$\begingroup$

I have a performance issue with cycles GPU rendering.

The scene I built takes 2:35s on CPU, but 8:47s on two HD 7950s. I tried all tile sizes from 16x16 all the way to 640x1024, and 8:47s was the quickest time I got.

I have two 3GB Radeon HD 7950 graphic cards in my desktop. I have the latest driver on a fresh install of Linux Mint 17. The benchmark performance is great. The standard BMW benchmark scene takes just 48.06 seconds, even with 480x540 tiles. My laptops CPU, an i7 3632QM, needs 5:19s for the same job.

What is going on? I was expecting a rendering time of around 23s not 527s! It makes sense that my heavier scene would take longer, but it does not make sense that CPU would be faster than GPU. Why is the benchmark behaving as expected, but my scene is so slow?

I only use diffuse surfaces, a few simple models and one sun light.

Is there a setting I missed that really slows down GPU rendering?

$\endgroup$
  • 1
    $\begingroup$ It entirely depends on what you're rendering. If you've got 2,000,000,000 polys, that's going to take a long time. Can you add an image of what you're rendering? Maybe also include a screenshot of your render settings. $\endgroup$ – Matt Jun 3 '16 at 19:00
  • $\begingroup$ ...if you don't have enough rep to add the images, link them in the comments and I'll add them for you. $\endgroup$ – Matt Jun 3 '16 at 19:01
  • $\begingroup$ I do understand that, if i have a very complex scene to render, it will take a lot of time. Regardless of CPU or GPU rendering. My problem is: The BMW Benchmark takes 5min19sec on the CPU and only 48sec on GPU My scene takes 2min35sec on the CPU but 8min47sec on the GPU If i only consider CPU times i would say my scene is about half the workload of the BMW benchmark. And if i look at the BMW benchmark performance i would expect the GPU to be 6.5 times faster on my scene. But it is actually 3.4 times slower than the CPU! $\endgroup$ – somethingISworngHERE Jun 6 '16 at 12:26
  • $\begingroup$ My scene has got 325k vertices, 190k faces and about 374k triangles. The BMW benchmark scenen has 99k vertices, 94k faces and 187k triangles. I have about double the amount of polygons. But i only need 144 samples and i'm only rendering diffuse surfaces. No glossy or transparent objects and no subsurface scattering. My scene is not unreasonable complicated. Im not using several orders of magnitude more polygons or samples. If the number of polygons i can use is the limiting factor, is there an upper limit for the polygoncount where the GPU is still reasonably fast? $\endgroup$ – somethingISworngHERE Jun 6 '16 at 12:27
  • 1
    $\begingroup$ Yes, that is my issue! I thought the only performance limit to GPU rendering would be the available GPU memory. And if you run out of memory cycles crashes. Im going to switch of layers for rendering and see if the promised GPU speed finally shows itself. $\endgroup$ – somethingISworngHERE Jun 6 '16 at 13:02
2
$\begingroup$

Oh FFS! There is actually a second switch you have to enable in order for cycles to render on the GPU!

So the answer to why my two Radeon HD 7950 graphics cards where so slow, is that cycles wasn`t using them! It was still rendering on the CPU.

It is simply not enough to "enable" GPU computing under the Blender User Preferences (Ctrl+Alt+U) -> System -> Compute Device!

What you have to do, to actually render your scene on your GPU is:

  1. Use Cycles to render your scene
  2. "enable" GPU computing under the Blender User Preferences (Ctrl+Alt+U) -> System -> Compute Device
  3. After this a "Device" option pops up under the "Render" options. Which you have to switch to GPU.

then, and only then, your scene will render on your GPU.

Now that i got this figured out, i have a few follow up questions:

Why is there a second switch for the same option?

Why is the default selection for this option CPU?

Who thought this would be a good idea?

$\endgroup$
  • $\begingroup$ And now that i got it on my own and posted the answer, it is so nice that blender stack exchange started to sugest the right answer under "Related" from 2 years ago: blender.stackexchange.com/questions/14779/… $\endgroup$ – somethingISworngHERE Aug 29 '16 at 12:53
  • $\begingroup$ The computing device selectors in the prefs are only there to make the hardware available to Blender. Under the render panel you have to choose what computing device you want for the current render. I think it makes sense. Also notice that the GPU is not necessarily always the best choice. In complex scenes with motion blur the GPU can be slower than a decent CPU. $\endgroup$ – Gez Nov 28 '16 at 1:19
  • $\begingroup$ Also, GPU has a more constrained amount of memory for textures, that may be not enough in some scenes with lots of textures. CPU is always the safest choice. You may have a GPU that is not powerful or modern enough for Cycles, but your CPU will always be adequate, so it's a better default. $\endgroup$ – Gez Nov 28 '16 at 1:19
  • $\begingroup$ The compute device selection also allows to select wich GPU to use if more than 1. $\endgroup$ – Bithur Nov 28 '16 at 1:28
  • $\begingroup$ @Gez: Yes the CPU is the "saver" bet, but it is impractical if you need 1231200 Frames renderd. Each with a 5120x4096 pixel resolution and at least 20 samples per pixel. If i had used the current best bang per buck CPU: Intel Xeon E3-1231 V3 it would have taken me 10.5 years to complete my task. $\endgroup$ – somethingISworngHERE Nov 29 '16 at 13:11

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.