32 vs 64 bit

I’m planning to build a new Linux box in the next couple weeks. I want to use Ubuntu 9.04, though that’s not officially supported… I’ll try it anyway.

But my main question is whether I should use 32 or 64 bit version. I clearly want to use 64 bit, badly, but I’d like some feedback from anyone with 64 bit Linux+CUDA experience.
On the Windows side this is an important question since XP64 is (and always will be) a lonely unsupported child, yet CUDA isn’t Vista/Win7 friendly yet.

Is there any reason to choose 32 bit Linux?

I get very, very angry when people install 32-bit anything.

(I also run 64-bit Ubuntu 9.04 just to upset the CUDA team…)

Excellent, a reactionary on the inside. An angry reactionary, even better!

Did you need to downgrade your GCC version to make it work smoothly? Or maybe 2.2 beta (almost final…) isn’t as picky?

I guess I’ll find out.

Thanks for the confirmation!

None. CUDA has worked wonderfully on 64-bit Linux for years. :)

No compelling one I can think of. Besides, aren’t you planning to spend megabucks on 12Gb of DDR3 ram for your new machine? Would be kind of a waste to see 8+1Gb of it sitting there doing nothing…

Geez, 12 gigs of RAM only costs $180 these days, that’s not a splurge, that’s just a default buy.

Even the GPU prices are affordable these days. I paid $600 for my first 280GTX only 10 months ago… now you canbuy a 260GTX for only $155!

“Splurge” these days is whether to buy an Intel X-25 SSD for a boot drive or not. Pricey, but so nice…

Perhaps our perspectives are a little different.

I live in a country with 22% sales tax and the current best prices I can see on 6Gb triple channel PC3-10666 kits is about the same in dollars as your total memory spend. Plus, because I usually build white box clusters rather than individual workstations, I tend think in multiples of 8…

In any case, it would be almost criminally negligent not to run 64bit linux on a machine like that, in my opinion.

Here’s another Yes vote for 64-bit Linux + CUDA. It works very nicely, I’ve been going at it for 1.5 years or so.

One reason for 32-bit is possibly that pointers are a bit smaller, 4 bytes instead of 8. This can save a little device memory. You can munge 64-bit code to use 32-bit pointers though, AFAIK. This hasn’t caused me any trouble or bottlenecks on 64-bit though, I simply use 64-bit pointers.

Another reason might be for that extra bit of compatibility with old libraries. I haven’t had any issues with this either.

At the office, we just upgraded our machines from 4GB to 8-12GB. It is definitely a boost to productivity and niceness. This is the single reason I’d never want to go back to 32-bit. Also if you’re using RAID on your workstation, this much memory is useful as far as I know, for big caches and stuff.

You even get a small win on CPU stuff (even if you don’t use int64_t) because when AMD defined the x86_64 architecture, they not only doubled the size of the registers, they doubled the number of registers as well. x86 has always been register-starved compared to other processor architectures, so doubling the # of registers has a noticeable impact. When the Opteron first came out, I was seeing 20% improvement on some toy benchmarks comparing 32 and 64-bit compiles of the same code.

I am developing under 64 bid Ubuntu 9.03, using gcc/g++ 4.2 and everything is working just fine. Using a QuadroFX-3700 card with 185.19 drivers.