Number of Threads when using Cycles


I’m a little confused as to how many threads I should set under the performance settings for cycles.

Blender auto-detects 8 threads, which makes sense as I have an Intel Core i7 Processor with 4 cores and 8 threads.

However… I’ve noticed that if I set the number of threads in cycles to a fixed higher number, e.g. 64 threads, cycles will render scenes faster than if it were set to auto-detect 8 threads.

How does this happen if my cpu only has 8 threads?

Is it safe to set a higher fixed number of threads when rendering?

You may have a video card with several hundred cores. Cycles is capable of using all of them

It can’t use both at once. If you’re setting it to higher than 8 threads than the improvements you see are due to different bucket sizes and memory allocation that happens to be faster for your particular scene. Basically, you’re telling Blender to schedule 64 operations at once, and the size of the scene is allowing it to crank through them in a quick fashion, more than likely because the RAM requirements aren’t huge. If you had a ton of geometry and large textures in your scene, setting to 64 threads is likely to overload your memory faster than setting it to 8 threads.

if you have an nvida gpu goto user preff ~ system and set the compute device to cuda, if it wont let you it could be ati card in your box (my560gtx gives me 336 cores, vast improvement on my cpu lol )

That’s not how Cycles or GPUs work.

Thanks for the info.

Ok, so if I set the threads to a high number, I need to keep an eye on the memory usage to make sure I don’t overload it? Otherwise, it’s ok to do it?

BTW I’m stuck using cpu to render on cycles as my gpu is AMD.

Please bear in mind that threads are an expression of the parceling-up of CPU time. All of which has absolutely nothing to do with the number of mathematical calculations that your GPU is capable of executing during hardware one clock-cycle.

Cycles uses the GPU hardware for everything that it does. Intuitively, I would anticipate that it would perform best when the number of threads is small, not large, because it does no good for multiple software entities to be “competing for” a single hardware resource. (Especially given that it takes a fair amount of time to “set up” a GPU-context and to then “tear it down again.” You don’t want to be doing that every few milliseconds!)

Insofar as CPU rendering is concerned, the number of threads should be tied (as it is, by default) to the number of available CPUs or cores … and even then, you must seriously consider just how much parallelism “the rest of your hardware” can realistically support. You must never over-commit the hardware, because, “one way or another, the hardware can only actually do what it can actually do.” If you try to play-games with multi-threading in excess of that … you’re just throwing valuable time away to useless overhead.

I’d say that you should certainly never exceed Blender’s default choice, but, if your hardware, RAM, etc. is in any way limited, you might seriously decide to experiment in reducing it. The results might happen faster(!!) when you do that.