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