Late last month AMD had announced the release of the Stream SDK for Linux. This Stream SDK brings support for the CAL and Brook+ libraries on Linux. The version released was Stream SDK 1.1 Beta, which arrived at the same time as the SDK for Windows XP. With this new Linux support, we ran a small Q&A session with Michael Chu, who serves as the product manager for AMD Stream software. In this article are AMD's answers to some of the questions asked by members of the Phoronix Forums.
For those not up to speed on stream computing, it's the process of accelerating general-purpose code algorithms on the graphics processor in order to take advantage of its enhanced parallel processing capabilities compared a traditional processor. However, to benefit from stream computing with AMD hardware you'll need an R600 (Radeon HD 2000 / 3000) graphics card or newer.
How much of this Linux SDK will be "open" and how much of it is closed-source?
AMD is taking an open-systems approach to its AMD Stream SDK software stack. We document each of the layers of the stack so that tools and library partners can feel free to target whichever layer makes sense for them. We feel that our software partners are a critical part of our success and fully encourage them to add value to the stack wherever they can.
In addition, Brook+ is open-source and the source code is distributed with every Brook+ installer. Also, at appropriate times, changes made to Brook+ are pushed back into the BrookGPU project tree on SourceForge.
Any date for the Linux GPU2 Folding@HOME client release?
While AMD encourages the development done by the Folding@HOME team, we do not directly participate in the development or dictate their release cycle. The Folding@HOME team will be better able to answer questions about their release plans.
Will future releases of the SDK be in sync with Windows releases?
Our intent is that, moving forward, AMD Stream SDK releases will support both Windows as well as Linux.
Will the SDK enable developers to utilize multiple (different) R600 (and in the future, R700) cards in GPGPU software?
The SDK already allows you to access multiple GPUs. In Brook+, this is done by spawning separate processes with appropriately set environment variables to target each GPU. In CAL, when you open the device, you can specify which device you wish to open. We expect to continue to offer that capability in the future.
What sets the R600 apart from older generations in Stream Computing? Will a port for older GPU generations be possible?
The 6xx series of GPUs were the first GPUs to be based on a unified shader architecture. This made utilizing the GPUs for general purpose compute much easier. The RV670 also introduced the ability for the shaders to scatter results to any location in GPU memory and introduced double-precision floating point hardware. Both of these unique features in the RV670 enabled more applications to be developed on stream processors.
While a port of the AMD Stream SDK would technically be possible, we are most likely going to focus on adding support for future GPUs first. If there is sufficient demand, we will consider adding support for older GPU generations.
If you have any questions you would like answered about AMD Stream and Linux, let us know in the Phoronix Forums and we will see about getting them answered. Thanks go out to AMD and Michael Chu for participating.