Stream Computing FAQ
AMD Compute Abstraction Layer (CAL) FAQ
Brook+ FAQ
What is stream computing?
Stream computing (or stream processing) refers to a class of
compute problems, applications or tasks that can be broken
down into parallel, identical operations and run simultaneously
on a single processor
device. These parallel data streams entering the processor
device, computations taking place and the output from the device
define stream
computing.
Today, stream computing is primarily the realm of the graphics processor
unit (GPU) where the parallel processes used to produce graphics imagery
are used instead to perform arithmetic calculations.
Characteristics of stream computing:
- Enable new applications on new architectures
- Parallel problems other than graphics that map well on GPU
architecture
- Transition from fixed function to programmable pipelines
- Various proof points in research and industry under the name
GPGPU
How does stream computing differ from computation on the CPU?
Stream computing takes advantage of a SIMD methodology (single
instruction, multiple data) whereas a CPU is a modified SISD
methodology (single instruction, single data); modifications taking
various parallelism
techniques into account.
The benefit of stream computing stems from the highly parallel architecture
of the GPU whereby tens to hundreds of parallel operations are performed
with each clock cycle whereas the CPU can at best work only a small
handful of parallel operations per clock cycle.
What are AMD's stream computing product features?
AMD's FireStream™ 9170, our latest generation stream computing
GPU, features:
- 320 stream cores (compute units or ALUs)
- 2GB on-board GDDR3 memory
- Double precision floating point support
- PCIe 2.0 x16 interface
View AMD FireStream
9170 specifications.
What are AMD's stream computing product advantages?
AMD's FireStream 9170 hardware:
- Only company positioned to offer a unique platform with strengths
in accelerated GPU as well as CPU computing
- Stream computing today leading to fusion tomorrow
AMD's open systems SDK approach:
- CTM initiative — Release low level specifications to enable
developers and end users to understand the architecture and
tuning to maximize performance
- Deliver high level, multi-targeted compilers through Brook,
3rd parties like RapidMind, and partnerships with universities
and industry.
- Deliver library functions through AMD's ACML, APL, Cobra,
and through university partner program.
View AMD
FireStream 9170 specifications.
When can I get an AMD stream computing product and what does it cost?
The FireStream 9170, AMD's flagship stream computing platform, is scheduled to be available in Q1 2008 in quantity. Please contact us for a price quote.
A software development kit containing compilers, libraries, performance profiling tools and drivers is available for download. SDK version 1.0 will be available in Q1 2008.
This SDK is a compilation of open source software and proprietary AMD software put into the open source.
Included in the first release are compilers, performance profilers, AMD's core math library (ACML) and AMD's compute abstraction layer (CAL) which enables device programming in familiar high-level languages rather than graphics programming specific to the GPU.
Please read our stream computing whitepaper (PDF 1.1MB) for more information about this SDK.
How does AMD's stream computing address the IEEE754 standard for double
precision floating point computation?
The IEEE754 standard defines formats for representing single
and double-precision floating point numbers as well as some special
cases like denorms, infinities and NaNs. It also defines four rounding
modes and methods for exception handling.
When we were preparing to launch our stream computing initiative in
2006, a series of customer interviews was conducted to get input on
requirements relative to this standard. They learned that as long as
we handled the special cases according to the most common usage, complete
IEEE754 compliance wasn't required. AMD's FireStream 9170 implementation
should handle a large majority of customers' requirements.
In the AMD FireStream 9170:
- Infinities and NaNs are handled as defined by the IEEE754 standard.
- Rounding is handled using the "round to nearest" mode,
which is the mode generally used in most applications.
- Denormal numbers are flushed to zero. This is a common optimization
in implementations where full-speed hardware support is not
available, and is adequate for most applications.
What does AMD's software stack look like?
AMD has authored a whitepaper (PDF)
that discusses our software stack.
How does the AMD FireStream support Linux?
AMD is committed to Linux and sees Linux as a major platform
for Stream Computing. Recently we have announced an initiative on
open source driver for Linux. We are continuing our momentum and
we expect that stream computing stack will support Linux over the
next calendar year.
What type of programming model does AMD use for AMD FireStream?
AMD encourages a pure streaming/SIMD model for AMD FireStream.
A few enhancements like data sharing are useful for a small subset
of applications. However data sharing in a SIMD environment brings
its own challenges and should to be used with utmost care. In fact
if used incorrectly performance might actually degrade.
Regarding specific compiler implementation choices — currently
we have enabled Brook with a CAL backend. We are looking at other options
as well, including industry standards.
What happened to AMD's CTM?
CAL is a natural evolution to CTM — we are building our software
stack bottoms up. We provide low-level access and specs as CTM extension
to CAL. CAL permits the end user to write portable code. Frequently
our developers like to drop down to the next level of detail for further
tuning and profiling. CAL provides this level of access.
Will the AMD FireStream SDK work on previous generation hardware?
To run the CAL/Brook+ SDK, you need a platform based on the AMD
R600 GPU or later. R600 and newer GPUs are found with ATI Radeon™ HD2400,
HD2600, HD2900 and HD3800 graphics board.
Which applications are best suited to Stream Computing?
Applications best suited to stream computing possess two fundamental
characteristics:
- A high degree of arithmetic computation per system memory fetch
- Computational independence — arithmetic occurs on each processing
unit without needing to be checked or verified by or with arithmetic
occurring on any other processing unit.
Examples include:
- Engineering — fluid dynamics
- Mathematics — linear equations, matrix calculations
- Simulations — Monte Carlo, molecular modeling, etc.
- Financial — options pricing
- Biological — protein structure calculations
- Imaging — medical image processing
If Stream processors are really GPUs, will I need to learn graphics
programming to properly implement my application?
No. AMD along with the open source community are working to mask
the GPU's graphics programming heritage. This is being accomplished
by our release of Brook+, the open source Brook compiler plus
AMD enhancements geared directly at non-graphics stream computing,
and AMD's CAL — Compute
Abstraction Layer. CAL provides high-level language access to the various
parts of the GPU as needed.
Developers are thus able to write directly to the GPU without needing
to learn graphics-specific programming languages. CAL provides direct
communication to the device.
Will future stream computing architectures force me to rewrite my
applications?
Implementing a new algorithm or application in a stream computing
environment will require the use of various stream-specific techniques.
These techniques and tools are all available in the AMD FireStream
SDK described above.
Existing applications that currently use only the CPU for computation
will require recompiling to take advantage of the capabilities of the
stream processor.
We anticipate most applications running in a stream computing environment
in the near term will be applications written from scratch with the
intent of implementing a stream computing platform.
Over time as applications undergo typical rewrites and recompiles,
those applications naturally suited to the stream computing environment
will migrate to this environment along with the necessary recoding
and recompiling tasks.
Is stream computing a return to the old co-processor days?
In many ways stream computing does resemble the days when vector
co-processors handled substantial mathematical tasks. The benefit
then as now is the remarkable performance boost gained through implementing
these specialized components.
We fully anticipate technological advancements as well as programming
techniques to pull these co-processors closer to the CPU over time
until, as with earlier co-processors, they disappear into the CPU itself.
AMD's competitors offer similar but non-standardized products. Should
I wait on product standardization before exploring Stream Computing?
AMD is focused on providing the tools necessary to help our customers
succeed with our AMD FireStream products, and we believe the open systems
approach is a critical component of this philosophy. Open systems enables
AMD along with partners and 3rd party vendors to collaborate closely
when developing highly integrated solutions as well as work independently
when targeting a niche solution.
AMD's open systems philosophy includes:
- Open IL and ISA specifications to ensure developers can optimize system
performance
- Support for AMD Brook+ along with other 3rd party high-level
tools to provide a choice of familiar development environments
- Open source Linux drivers and AMD-enhanced Brook+ enabling
developers to modify and retarget tools as needed
- AMD partnership opportunities with system vendors and integrators
to deliver customer-focused solutions
Who can I contact at AMD for more information?
Contact us with general questions about AMD's stream computing initiative, products, sales and training.
Contact us with technical questions about FireStream hardware, software or developer issues.
AMD Compute Abstraction Layer (CAL) FAQ
How do I get started with AMD CAL SDK?
We have assembled a number of documents to help guide you through the setup and early use of CAL. Please read these before getting started:
We have also authored a programmer's guide which is included in the SDK download.
Note that the three CAL files are also included in the SDK. We have posted them here as well for your reference prior to installing CAL.
Why does the integrated installer (setup.exe) behave badly?
The integrated installer is designed to invoke the CAL and BROOK+ installers in that order. Most of the installation logic is present in each individual MSI.
If you have problems with this installer, please remove any previous versions of CAL/BROOK+ using Add/Remove programs in Control Panel and try again.
Does the Repair/Modify option update my previous installation of CAL/BROOK+?
No, you would need to completely remove the previous version of CAL/BROOK+. The Repair/Modify option only repairs the current version of CAL/BROOK+.
What is CALROOT and where is it set and used?
CALROOT is set as the path to the CAL SDK during installation. It is defined in the current user's Environment Variables. Other users on the system have to define CALROOT in their environment or in the system environment.
The Visual Studio project files for the samples use CALROOT to locate the CAL headers and libraries. Some sample projects also use CALROOT to load themselves. You would not need CALROOT unless you wish to build the samples.
Brook+ FAQ
How do I get started with Brook+?
Brook+ requires the following be installed or available to work with AMD FireStream technology:
- Visual Studio (for Windows developers) or GCC (for Linux developers) installed and all environment variables correctly set up
- Cygwin (for Windows) — must appear later in the PATH variable than the Visual Studio tools
- CAL SDK installed from the same source as you obtained the source tree from
- CALROOT environment variable set
To build the compiler and runtime, enter the "platform" directory and type "make". This generates and fills the "sdk" directory.
To build the samples, first build the sdk as above, then enter the "samples" directory and type "make".
Where can I get CAL support?
Information was shipped in the installer.
What graphics driver does Brook+ require?
Brook+ has no direct dependency on the graphics driver. CAL working correctly with a given driver should result in Brook+ working correctly.
How is BROOKROOT used?
The makefiles need CALROOT defining. BROOKROOT is not used by the makefile system.