Geek Vacation Day #4: GTC Highlights

Monday, October 11, 2010 – 5:00 AM

So after the dust has settled and I’m back in not quite so sunny Seattle what were the highlights from GTC?

Keynotes: 3D and the Cure for Cancer

I was really impressed by the keynotes and wish I could have stayed for the final one on Thursday evening but had a plane to catch. The keynotes are now online, you can watch them here. Obviously you don’t get the full 3D effect but still worth checking out.

Thrust

My recent work porting the Parallel Programming with Microsoft .NET samples to use the C++ Parallel Patterns Library (PPL) also got me into using STL. Thrust is a library of containers, algorithms and iterators, much like STL and PPL. It sits on top of the CUDA C API and lets you write at a higher level of abstraction. For example the following code creates a number sequence on the GPU:

thrust::device_vector<int> D(10, 1);      
// set the first seven elements of a vector to 9
thrust::fill(D.begin(), D.begin() + 7, 9);
// initialize a host_vector with the first five elements of D
thrust::host_vector<int> H(D.begin(), D.begin() + 5);
// set the elements of H to 0, 1, 2, 3, ...
thrust::sequence(H.begin(), H.end());
// copy all of H back to the beginning of D
thrust::copy(H.begin(), H.end(), D.begin());

I went to two talks on Thrust at GTC. You can find more info on the Thrust wiki. Definitely something to investigate as a better way of leveraging CUDA without hand coding each and every kernel. Thrust comes with highly optimized algorithms for things like sort.

Patterns and Algorithms

The GPGPU SIMD or SPMP (Single Instruction or Program Multiple Data) programming model isn’t novel, it’s been around since the Connection Machine at least. People are revisiting that work as also finding new approaches to writing code for GPGPUs which don’t lend themselves to the same approaches programmers have been using successfully with CPUs.

There were several papers and presentations which touched novel algorithms for doing things like sorting on GPGPUs. Hilbert curves (Wikipedia) came up a couple of times too.

Resources

CUDA By ExampleI also had time to finish of CUDA by Example on the flight home. Definitely worth reading if you’re new to GPGPU programming. I’m thinking of getting Programming Massively Parallel Processors: A Hands-on Approach which goes into more detail. There’s also a couple of GPU Gems books specifically focused on GPGPU computing in the pipeline.

I’m also busy playing with Nvidias latest toolset; the CUDA 3.2 SDK and Nvidia Parallel Nsight 1.5. Both of which are now available as release candidates.

Overall I was really glad I took time out to attend GTC. Lots of energy around GPU computing on real research and consumer products.

Sorry, comments for this entry are closed at this time.