GPGPU is one of those trendy buzz-words that gets thrown around a lot these days ... and for good reason. With the latest GPUs, the potential for accelerating a large array of algorithms (some would argue that there's some degree of parallelism hidden everywhere) is rather staggering. However, in order to tap into the parallel processing muscle of a GPU (and there's quite a bit of muscle there), proper tools are needed - and so we have arrived at today's topic.
ATI Stream Computing
Few may recall that a while back, think around the R520/580 period, ATI was the first to promote the GPU as more than a pixel pushing machine - speaking of things like Physics or general purpose processing on the GPU. Sadly, whilst sounding quite good, the outcome was less than spectacular: a [email protected] GPU-accelerated client and a number of promises that didn't quite materialize during the cards' lifetimes. With the R6xx and subsequent parts, the ATI's GPGPU initiative seemed to gain some slight traction, but it remained something outside of the marketing forefront, being primarily dedicated to developers, with the end-users knowing little about the existence of the Stream SDK or Brook+, for example, whilst nVidia was trumpeting CUDA quite seriously, to such an extent that nowadays the perception is that nV is THE choice for GPGPU. Finally, ATI has decided to start promoting itself better in this field - enter the Stream SDK 1.3 update.
Stream SDK 1.3
The focus of this update is to bring ATI Stream Computing into the eye of the consumers, to give everyone who has a recent Radeon card (from R6xx onwards) the possibility to leverage it by including CAL (Compute Abstraction Layer) into the Catalyst driver suite (in the December release), to ease developers' jobs by improving the available toolset and to show the benefits of Stream computing through a free to use, consumer-interesting application: the AVIVO Video Transcoder. Let's go through these one at a time.
As you may know, AMD has this “wacky” idea that the Future is Fusion. Instead of thinking about ways of supplanting the CPU with their GPUs, or claiming that the GPUs are dead(ish) and that the future is in CPUs, they envision a complementary relationship between the two: there are certain tasks that for which the CPU will be better suited, just like there are tasks where the GPU will rip. Fusion, as a corporate initiative, is about creating a coherent eco-system where each is assigned the job it's best at, with the tag-team providing the best results:
Moving Toward Open Standards
Whilst development tools for the CPU are rather ubiquitous (having years upon years of history does help there), tools for developing non-graphics applications on the GPU are still in their growth phase, as illustrated by the fact that an industry standard is yet to emerge, with both AMD and nVidia having proprietary solutions, at this point in time. AMD's viewpoint is that the industry should focus on open standards, that allow for developing one time for many target-platforms, instead of having to use a custom tool for each. As such, Brook+ (and similar proprietary solutions) is regarded as a tool for those that want to start developing now, but going forward AMD expects OpenCL and DX11 (and beyond) Compute Shaders to be the preferred tools for development:
Now, most of this hubris may not be all that important for the average guy who isn't that preoccupied with writing code. What he will undoubtedly care about is applications that can benefit from GPU acceleration. He may never download the Stream SDK itself, but he sure would appreciate it is his videos encoded faster or his perky presentations rendered more rapidly, for example. Luckily, AMD finally decided to also push the benefits that the typical users can experience, making it interesting not only for the developers, but also to the masses:
content not found