Multithreaded Rendering Tile Order question

I build Blender from source everyday on my 8-core Mac. Recently, I noticed a change in the ordering, the “pattern” if you will, of the rendering tiles. This is not problem, but how that change affects multicore rendering is a problem.

Before: Tiles would render from the center outward, always with 8 tiles being rendered at any time.

Now: Tiles render in vertical columns, but do not shift to the next column until all of the tiles in the first column are finished.

This causes a huge slowdown! I have a scene with a complex window/reflection area near the top, while the rest of the scene below is a simple wall. The problem is that the simple part is rendered very quickly, but the complex area takes much more time. While the complex tile is being rendered, the other cores stop working. They just sit there, twiddling their thumbs, waiting for one tile to finish before they all jump to the next column, where the same thing happens again… all across the entire scene.

So the question is: Did I miss this change until now, or am I doing something wrong? Is there a setting somewhere for this?

Solved - The camera was in Panoramic mode. Setting it to Perspective restored original “Center” pattern.

I am pretty sure that that is unintended behavior for that rendering style… maybe report it as a bug.

in any case you should be able to switch the tile order in the render preferences.

Definitely[/i] report this as a bug … of the :ba: “d’oh!” :ba: variety.

The Implementor (ommmm …) no doubt simply failed to consider that all of the tiles in a scene might [U]not require a comparable amount of time to render. Each available rendering-thread ought to select another tile to render, perhaps at-random, as long as there are any tiles left to be rendered in the current frame. (Offhand, I can’t envision any algorithmic constraint that would preclude the tiles from being completed in essentially a random fashion.)

I’ll admit that I don’t get the problem here.
Say you have 8 threads, so every thread will take “next” available tile and work on it.
In some cases you may have issue that one thread is working on the last tile and rest threads have already done their stuff, so we have to wait.
If your scene is varies in terms of complexity you may consider setting very small tiles, so you’ll increase chances that all of the threads will be busy almost all the time.
Order doesn’t matter here. If however you don’t like the order why don’t you change it?
Check “Performance” tab in render settings:


Center is actually slightly slower than the other tile orders on most scenes. Probably due to cache coherency or something, but I don’t know the real reason. The advantage to center-out/spiral tile patterns is they do the center of the frame first, which is useful for visual feedback.

Hi, for CPU rendering it is better to set small tiles in most cases, to keep all cores busy.
32x32 or even 16x16 is the way to go.

Cheers, mib

Hey guys, thanks for the awesome response!

@doublebishop: I thought it was a bug too, until I saw BartekSkorupa’s image. Now I’m not so sure.

@sundialsvc4: Agreed. Also, if you’re down to the last tile, it would be nice if that tile could be subdivided automagically for the idle cores. I wait a loooong time for some of my more complex tiles to finish.

@BartekSkorupa: I do not see the same “Performance” menu that you illustrate, because I’m using Blender Internal Renderer, not the Cycles Renderer. If I switch to Cycles, then things appear correct and work correct.

The thing is, It’s been working fine just like the cycles choice for “Center”, but now suddenly it doesn’t. I kept thinking I must have changed something in the user preferences, but I can’t find anywhere else that affects the tile rendering. Hmmm…

J_the_Ninja: I hadn’t noticed a speed difference before, because I liked having the center show first for the reason you mentioned, and never tried anything else. I’ll look into it if/when I figure out what’s going on and get it back to what I expect.

A look at the problem…

http://www.airheaded.com/Render-8.jpg

http://www.airheaded.com/Render-2.jpg

Thanks for the input everybody!

I cant get left to right working at all for blender render? weird… i would definitely report this as a bug.

@doublebishop:

I’ve reported what I thought was a bug once before, but it turned out to be a setting that I had set incorrectly. Yikes! You could see the egg on my face from the moon! Now I’m a little ‘gun shy’ to ever again expose my ignorance before such an advanced group of developers.

But I guess I’ll report it if I really, REALLY understand the problem completely this time.

~~~ time passes ~~~

Hey… Not a bug. Further floundering reveled that the problem was the camera was in “Panoramic” mode. Setting to “Perspective” restored the desired “Center” rendering pattern again. Sheepish…