[Beowulf] NVIDIA GPUs, CUDA, MD5, and "hobbyists"

Kilian CAVALOTTI kilian at stanford.edu
Wed Jun 18 15:21:46 PDT 2008


On Wednesday 18 June 2008 02:46:04 pm Greg Lindahl wrote:
> One data point cannot prove that CUDA is easy. There are people out
> there claiming that FPGAs are easy to program, because they're one of
> the 7 people on the planet for whom programming an FPGA is easy.
>
> I've looked over CUDA and some examples, and while it's better
> looking than some of the other GPU programming languages out there,
> it's clear that it is more difficult and time-consuming than using
> traditional languages on traditional cpus.

I'll add my 2 cents here.

I've recently attended a "CUDA technical training session" given by 
NVIDIA in Santa Clara, CA. The presentation came along with practical 
exercises (laptops were provided for the hands-on session, sweet). It 
wasn't about going too deep into details, but from what I've seen, 
they've made a lot of effort to make the language understandable and 
usable for whoever has some programming experience. 

CUDA is regular C, with a small set of extensions. You definitely have 
to wrap your mind around some concepts (loops are irrelevant, for 
instance, since everything GPU-related is implicitely parallel ; you 
have to divide your work into smaller units which can fit in the CUDA 
programming model, and which are susceptible to keep the GPU pipes 
busy ; you don't really control how the work units are scheduled to the 
processors, etc.), but nothing fundamentaly different from your average 
parallel programming.

So, yes, of course, there's a learning curve, and I only scratched the 
surface, but it doesn't seem to me that any experienced programmer 
would need more than a couple days to begin writing efficient CUDA 
code.

We've also encountered somme oddities, like CUDA code freezing a machine 
running X.org (and using the proprietary NVIDIA driver), compiler 
segfaults or code returning incoherent results. We didn't spend too 
much time on debugging those, so they may very well have been related 
to the code itself, and not to the compiler or the driver. And 
moreover, it was version 1.1, and I think they released a version 2.0 
since then.

Anyway, CUDA is definitely not an UML-like language (it's not enough to 
draw boxes, you still have to write code, and NVIDIA already ported a 
bunch of standard libs to help you porting your applications), but it 
definitely looks easier than what ATI used to call CTM.

Cheers,
-- 
Kilian



More information about the Beowulf mailing list