Blender on 64bit

Does blender work/render much faster with a 64bit OS? Anybody here have any experience in that area?

I am having good luck with Linux 64 bit. My times are about 10 - 20 percent faster with Blender internal and up to 3 times faster with certain Yafray renders (16 minutes down to 5)

There is speculation by some that it doesn’t make a difference and to go with a 32 bit build for greater application compatibility. I have a second hard disk in my system for nothing but Linux / Blender so I could care less about some of the issues that some have with 64 bit. Do some searching on the threads for Linux 64 bit and you’ll find some enlightening reading.

3 times faster because of 64bit is just plain impossible…there are only two things of practical meaning that x86_64 has over IA32 on the same CPU: Twice as many general purpose and SSE registers, and the ability to handle 64bit integers directly. The latter is pretty useless for 3d rendering, the former gives you maybe 20% if you’re lucky.

If you see such a difference, it’s simply from the fact that the 32bit binary is badly optimized, possibly built to work the most ancient i386 CPU when it comes with your i386 distro, while for 64bit binaries it is pretty much mandatory to use SSE2 instead of x87 (on linux at least…) and you can safely optimize for newer CPU architectures even for a generic build.

Build your 32bit binary with proper CPU optimizations and compare that with your 64bit binary…

Correction on that ^^ not only does it have twice as many sse registers, it also has twice as many general purpose registers (r8-r15).

So yeah, 10-15% speed up can be normal. And depending on a ton of internal programming issues in yafray, I could see much more than that, but yeah, 3 seems high. Not impossible (imo) but high.

The reductions that I got with the Yafray build were also due to the fact that my scene will not render with more than 1 thread in either XP or Vista. I rendered the file with one thread in Linux 64bit and it was about 10 minutes down from 16 in Windows. THE KICKER WAS…that the threads worked in Linux where they didn’t in Windows. By using multiple threads in Linux, I was able to reduce it down to 5 minutes.

I have tried to use an optimized Gentoo 32 bit build and it was good, but I still got a significant improvement on the 64 bit build.

As far as I know a drawback of 64bit is greater memory usage, is that correct?

If so you will get great performance breakdowns once the RAM is fully used up what will happen faster than on 32bit…

Increase in memory usage depends very much on the application. If you use 64bit addresses they obviously need 64bit of memory to store them. So if you have data structures making heavy use of pointers they will considerably increase in size.
Hence for the new YafRay code i changed several structures to use 32bit indices instead of pointers, to keep the 64bit overhead small.

This also has an impact on performance, CPU caches can hold less addresses and memory bandwidth requirements rise, that’s why you will find benchmarks where 64bit binaries are actually slower than 32bit ones, despite more available registers on x86_64.