CFD Online Discussion Forums

CFD Online Discussion Forums (
-   Hardware (
-   -   Linux+CFD: is 64bit really a need? (

CAVT August 25, 2010 04:14

Linux+CFD: is 64bit really a need?
Ok, I know this may sound trivial as many would immediately think "Of course! 64bit is way faster and more powerful than any 32bit".
Well, I'm most of the time a PCLinuxOS user, it's a very nice system, really fast compared to other 32bit systems (even other Linuxes, although I won't claim it's the fastest), and many complaint there's not a 64bit version. However, I came accross this the other days, and here I quote it:


About the 64bit versus 32bit.
I know there differences and I do use 64 bit a lot because of speedy blender renderers. Now let me tell you a fact that actually made me feel stunned.
I have a scene on blender that renders with 1:28 on 64 bits and takes 2:05 to render on 32 bits... This concerns Gentoo, Ubuntu, Mandriva, Fedora, Opensuse... I've tried them all.
Here is the amazing fact... PCLinuxOS 2010 is a 32 bit linux but the did something with the kernel and gcc (it's not only the bfs... I tried it)... PCLinuxOS 32bit renders that scene in 1:15... this is faster then a Gentoo 64 bit with all the custom USE and CFLAGS to help me out.

PCLinuxOS remade linux and set 64bit performace down to it's own feet.
The user doesn't specify his hardware, but anyway, renders are not a piece of cake. Now, in Linux you can use pae kernels which extend the maximum RAM for 32bit systems to 64GB instead of 4GB. My question is then, how convenient is it to use a 64bit system instead of a 32bit? Let's pick the following cases to compare, with the only restrictions of equal CPU clockrate, same amount of RAM above 4GB and same Linux distro in 32bit and 64bit versions:

1) 32bit Processor, 32bit Linux distro with PAE Kernel, software optimized for 32bit.
2) 64bit Processor, 32bit Linux distro with PAE Kernel, software optimized for 32bit.
3) 64bit Processor, 64bit Linux distro, software optimized for 64bit.

Let's suppose also that we are talking of a single desktop machine, budget irrestricted, to work at home, no clusters or similar high-end stations.

Which of these options would have the best performance? Which one of these options would be the one with highest performance/cost ratio?

Naturally I omitted other conditions, so when answering feel free to asume the circumstances. If other UNIX based systems have the possibility of using a PAE Kernel, you can mention them, I simply mentioned Linux because it's what I best know (Windows doesn't have PAE, so don't bother in mentioning it :D).

wyldckat August 27, 2010 15:57

Greetings CÚsar,

In my experience, here are the limitations for 32bit PAE and related issues:
  • If the CPU is 32bit, and unless the motherboard is a special build, you will always be limited to 4GB of RAM, even with PAE.
  • PAE allows the OS to use up more than 2GB, thus allowing multiple programs to use up to 2GB of RAM. So, if you have a 64bit processor and 8GB of RAM, you will need at least 4 processes to use up all of the available RAM... and this is assuming the kernel's PAE system is ready to handle 8GB of RAM.
Now for some notes in general:
  • Most 32bit versions of Windows of the past 5 or so years do have PAE, but the regular versions are limited to about 3GB and sometimes 3.25GB.
  • Windows Server editions might have extended PAE systems that allow more RAM to be used, but it seriously depends on what version of which year we are talking about.
  • The major advantage of a 64bit processor over a 32bit processor is that (at least in theory) the 64bit can handle words twice the size of 32bit processors at the same speed rate. So, according to this theory, "double precision" and 64bit integer variables are processed 2x faster with 64bit processors than 32bit processors, but the rest probably works at the same speed. But this also depends on how the applications are compiled and "how good" the compiler is.
  • As for PCLinuxOS, I haven't done any research on it, but I can hypothesize that:
    • the 32bit version you speak of was running on a 64bit processor and that it was compiled as if the 64bit CPU extensions were used as they were like SSE and such.
    • Or it had deeper ties to the existing SSE extensions available in the CPU.
    • There is also the possibility that the kernel was compiled with Intel's C compiler, instead of the gcc's version...
    • Or if it was built with gcc 4.5.0, then that would explain the speedup, since there were some major optimizations from the 4.4 series to 4.5 series.
    • And there is a remote possibility and it is purely an hypothetical: if Linux kernels are always compiled with Intel compilers, and if the reported test processor is an AMD, then PCLinuxOS is one of the first Linux versions that use the unrestricted Intel compiler. What's true about this hypothetical: Intel did limit their compilers in AMD processors, in order to throw of users on AMD's true power. Just search for "intel compiler AMD" and it will pop-up in the first results!
So, I can only come to the conclusion that:
  1. Buying a 64bit CPU is an investment for the future.
  2. Buying 32bit CPUs would only compensate if you were building a low cost cluster and/or a very low energy system... assuming that the 32bit processors would be cheap enough when compared with their 64bit competitors.

edit: I forgot about a personal work experience of 32 vs 64bit builds of OpenFOAM: OpenFOAM 1.7 motorBike - Run Times
This page shows some runtimes of a single CFD case using OpenFOAM 1.7.0 cross-compiled with mingw-w64 running in Windows 7 x64, both 32 and 64bit builds, versus 32 and 64bit Linux versions of OpenFOAM 1.6.0 (openSUSE 10.3 x86_64 to be exact)! In both platforms, the 64bit version is always considerably faster, and the 64bit version in Windows almost catches up with the 32bit version of OpenFOAM in Linux :rolleyes:
Ironically, both Windows and openSUSE were 64bit versions, but running 32bit applications in a 64bit OS shouldn't have a considerable performance hit.

edit 2: as for the rendering times in PCLinuxOS, the drivers for the graphics card also play a key part of rendering times!

Best regards,

CAVT August 27, 2010 17:12

Exactly the kind of answer I was looking for!:) Thanks, Bruno.
Unfortunately this puts and end to my supercheap but superpowerful future machine, I'll have no choice than spending a few more bucks. It's nice to see however that Linux even in 32bit performs better than Win (interesting the info on the PAEs BTW), so after all it's not a bad idea for low-level works. It happens that I'm putting together a Linux distro destinated to engineering students, and since 32bit is cheap for their budget (like me:rolleyes:) I'm building everything to be used in low-powered hardware (I'm simply installing, configuring and then remastering, nothing special). Salome and Saturne run pretty slick so far (1.2million cells, k-e steady state in 20 iterations, 4hs in a Sempron LE1100 with 2GB RAM... horrible output though, lol).

All times are GMT -4. The time now is 09:56.