It’s the age old question: GPU or CPU? Ok, so it’s not age-old, but it a popular topic at present. GPU-pusher NVIDIA has done a good job getting out the word on the GPU’s incarnation as an application accelerator extrordinaire. 50-100x speedup anyone? So it’s a no brainer, right? Not so fast. Desktop Engineering‘s Contributing Editor Peter Varhol has an interesting writeup comparing the two architectures. The gist of the article is that we need both, but there are best use cases for each, and the field is definitely still evolving.
GPUs have traditionally been used for manipulating computer graphics…they are, after all, graphics processing units. But over the last decade, engineers and scientists have increasingly been using GPUs for non-graphical calculations. Benchmarks show GPUs performing very well on engineering applications, but there’s a downside. Because the GPU is a specialized processor it has difficulty performing a host of general-purpose jobs — in other words, the GPU has serious limitations. And it’s difficult to get existing software to run on GPUs without vendor support.
Says Varhol:
So it turns out that you still need the traditional CPU after all. You need it because that is where the vast majority of engineering and office software runs, where the primary software development skill set resides, and whose all-around performance is at least good enough to remain in that role for the foreseeable future.
What GPU computing vendors have done is to pair the GPU with the CPU in one system. The GPU does the specialized computation and the CPU does what it has always done, the general-purpose computation. Right now, the hybrid model offers the impressive speed of the GPU and the general-purpose computing of the CPU. Eventually, these will likely come together on the same die. In fact, ATI has announced its Fusion integrated CPU/GPU architecture, which it calls an Accelerated Processing Unit (APU).
Varhol again:
Many systems using GPUs and CUDA have a single industry-standard processor, usually running Windows or Linux. An application written for a GPU typically has a front end running on one of these operating systems. When a computation is required, the relevant data is passed off to executable code loaded onto the GPUs. When execution is complete, the results are returned to the CPU and displayed.
If you’re in need of GPU-based workhorse, vendors such as Appro, Microway, Supermicro and Tyan all offer systems with multiple processors and cores targeted to specific uses like engineering.
Summing up, Varhol states:
An ideal configuration is one with one or more CPUs and a set of GPUs that use CUDA or similar parallel computation architecture. All support applications, such as email, web browsing, and word processing use the CPU. And with tools such as Accelereyes Jacket … and NVIDIA Nexus, engineering software will eventually take advantage of both to speed up complex computations.
Keeping all of the above in mind, the real question becomes apparent: whether to use a traditional CPU-only architecture or a hybrid approach that takes advantage of the best each processor has to offer. As software tools evolve to streamline the process, the “best of both worlds” scenario becomes more and more appealing.