Interview Nikkei Electronics Asia -- August 2008
GPUs Help Spread Parallel Computing

E-Mail Article
Printer-Friendly
Tweet This
Digg This
Share this with friends on Facebook
Buzz Up!
Jul 29, 2008 18:11 Nikkei Electronics Asia

Graphics processing units (GPU) are evolving to provide a diverse range of image processing functions flexibly and at high speed; as a result they are morphing into architectures appropriate for general-purpose calculating engines. The term "GPU computing" has been applied to the idea of utilizing their capabilities for high-speed processing of applications such as medical imagery processing. We spoke to David Kirk (right), chief scientist at NVIDIA Corp, a manufacturer of GPUs. Kirk is a leading proponent of GPU computing, and the person behind NVIDIA's development thrust.

You've been heavily promoting GPU computing recently. What made you decide it was such an important development?

Parallel computing is entering a very interesting stage right now. It used to be that parallel computing environments were only available on supercomputers costing hundreds of millions of dollars, but today anyone can buy a system.

I have always been involved in computer graphics technology, such as GPU development for personal computers (PC). Now that GPUs are programmable we're beginning to see adoption of parallel computing by general computer users. GPUs can make a real contribution to spreading parallel computing technology into new fields such as education and science. GPUs are going to be crucial tools not only in displaying imaging, but in all types of computation.

There are not many successful examples of using multiple processor cores to run software in parallel, are there?

I think it's a bit premature to categorize all those attempts as failures. The knowledge, design approaches and other tips gained are being carried on in parallel computing architectures today. There is one element that has not ever succeeded, which is educating software developers in parallel computing.

For the past 20 or 30 years, software developers haven't needed to consider parallel computing at all, because the advantages gained from higher microprocessor operating frequencies were just there for the taking. Now that microprocessor manufacturers are switching over to multicore designs, however, parallel computing has become a basic assumption in software design. Everyone has to take it into account now.

The actual coding needed to enable parallel processing is simple. In most cases, though, that alone doesn't provide any improvement in execution performance as the number of cores is increased. The performance improvement gained by automatically converting a sequential program intended for a single-processor system to run under parallel processing is not very impressive, either.

The key is the stage before actual program coding: analyzing the problem and visualizing the parallel task structure needed to process it. This approach to parallel processing - I refer to it as "computational thinking" - is something that software developers really need to master.

For a developer, this should be something fun, like solving a puzzle. When educating programmers it shouldn't be the first lesson, of course, but I do think that computational thinking dealing with parallel processing should be taught in the second. Parallel computing should be introduced into all kinds of equipment, from supercomputers to mobile phones. We want programmers to utilize Compute Unified Device Architecture (CUDA) as the development environment.

What are the critical architectural differences between GPUs and microprocessors?

(Continue to the next page)

NIKKEI ERECTRONICS ASIA

Nikkei Electronics Asia magazine is available each month free of charge to engineers, managers and other qualified readers.