← All ideas
  • Published 20 Jun 2018

Surely GPU + CPU rendering can be better than this in 2.8?

As anyone who's used 2.8 will know, Cycles is fastest with 16x16 tile sizes when rendering using the new CPU + GPU option because the CPU is fastest with that small tile size. But the problem is the GPU is very poorly suited to this small tile size.

So why can't blender use different tile sizes for each when rendering? For example: CPU using 16x16, GPU using 460x460. Basically have adjustable tile sizes for each.

I don't know if there's some technical reason why this can't be done, i can imagine the tile layout being a issue, but this would obviously massively speed up rendering times if it can be done. Because at the moment this CPU + GPU option is barely faster, or possibly slower, compared to just using the GPU in cases where you already have very fast GPU(s).

20%

Development Status: Open

Upvote 1 Downvote 4
beany
20 Jun 2018

8 Comments

Lauloque

Probably because assigning render space to two different devices witch each a different tile size is both complicated and not advantageous: once there is no place for a big GPU tile, the GPU won't be able to work and the whole rendering process will be bottlenecked at this point.

What they've done instead, is enhance GPU rendering performances on small tile size until GPUs get about as faster on low tile that high tile. Making both problems quoted above not relevant anymore.

1
beany Author

@loic.dautry: I get what you're saying, but for the case you mention the GPU could start off rendering large tiles (because GPU is still definitely slower for small tiles in 2.8, but yeah it's nowhere near as slow as 2.7) and then later switch to rendering small tiles.

The GPU often already renders different tiles sizes in 2.7 anyway, like the top/bottom/corners of a render for example, as the tile grid never fits perfectly (at least without using the Auto Tile Size addon).

It would still work out overall faster than having the GPU just render 16x16 tiles the entire time.

danielpaulus90

GPU actually works faster now with 32x32

1
ethanboxx

Tile size no longer matters on the GPU. I would link the wiki but stuff has been moved around.

Lauloque

That's not correct. If you run benchmarks on your machine, you will notice quickly which tile size are usable and which are not.

I.E. My computer, both GPU and CPU (gtx 970 - i7 4790) runs well on 16px based tiles, but the GPU itself is slower with 32 or 8, and so on until 256 which renders just a little faster than 16px tiles. CPU itself just gets slower with >16px.

TL;DR: Size still matters, but not in the same way than before.
Before, each GPU had a "low render time area" on some high tile sizes. Now its two "low render time areas" on high and low tile sizes.

beany Author

@ethanboxx: Is it fully implemented in 2.8 yet? Because i done some benchmarking...

In 2.8 and using just the GPU, for 16x16 tiles i'm getting 1 minute 42 seconds, versus 49 seconds for 460x460 tiles. For 32x32 i'm getting 1 minute 25 seconds. So neither is as fast but it's MUCH faster than 2.7 because that will take over 9 minutes with these same tile sizes.

So larger tiles are still better for GPU. Maybe 2.8 will improve more before release but otherwise i'd love to see something implemented like my original post, if possible.

Lauloque

I don't think it's a good idea to do benchmarks on 2.8, it's still WIP and highly unstable. GPU + CPU is available on 2.79 daily builds.

On top of that, as always when talking about performance : every machine is different.

AndySellers

I'm pretty sure the developers have thought of this already. You might give them just a little credit...