AMD FireStream

From Wikipedia, the free encyclopedia

AMD FireStream 9170
AMD FireStream 9170

The AMD FireStream (previously branded as both ATI FireStream and AMD Stream Processor [1]) is a stream processor developed by ATI Technologies. It is designed to target various industries, such as the High Performance Computing (HPC), scientific, and financial sectors, which utilize the stream processing/GPGPU (General Purpose Graphics Processing Units) concept for heavy floating-point computations. The AMD FireStream can also be used as a floating-point co-processor for offloading CPU calculations, which is part of the Torrenza initiative.

Contents

[edit] Overview

Since the release of the past-generation Radeon R520 and GeForce G70 GPU cores, the programmable shaders architecture with large floating-point (FP) throughput has drawn more attention from academic and commercial interest groups, primarily for its ability to process data besides its original intended use of rendering visual effects. Due to the displayed interested, more resources were allocated towards developing GPGPU products – responsible for calculating general purpose mathematical formulas – to process heavy calculations which were previously running on mainstream servers, desktop Central Processing Units (CPU), and specialized floating-point math co-processors. GPGPUs were projected to have performance gains upwards of a factor of 10 when compared to CPU-only projections.

Similar GPGPUs appeared as early as the early 2000s. BionicFX was experimenting with processing audio data with a GeForce 6800 video card, announcing the Audio Video EXchange (AVEX) framework [2], with similar trials being performed by ATI at about the same time. Another example is the Folding@Home distributed computing research program from Stanford University. This was the first piece of software to use the Radeon R580 GPU and other ATI GPU cores, equipped with a special beta version of the ATI Catalyst driver (version 6.5), to perform computations unrelated to graphics. Since May 2006, it has used the GPU cores to accelerate the simulation of protein folding in order to investigate protein-related diseases. At this time, the ATI FireStream was in its planning stages.

With the acquisition of ATI complete, AMD officially announced the reconstruction of branding and announced the AMD Stream Processor (originally the ATI FireStream) on November 15, 2006 as the industry's first commercially available hardware stream processing solution. Based on an ATI Radeon X1900 video card, the AMD Stream Processor is a specialized add-on card that implements the R580 Graphics Processing Unit (GPU). However, it was targeted at complex floating-point calculations used in scientific and financial fields instead of 3D graphics acceleration. AMD claimed that this processor had 8 times the floating-point performance over traditional graphics data processing. [3]

In fact, ATI had put considerable effort in to research and development (R&D) of a GPGPU product before their purchase by AMD [4], and announced the adoption of the stream processing/GPGPU concept in its line of GPU cores in 2006, codenamed Radeon R580.

The brand was further renamed to AMD FireStream with the second generation of stream processors (based on a 55 nm process), released on November 8, 2007. [5] Future plans include the development of a stream processor on an MXM module, intended for embedded applications and next generation products in the fourth quarter of 2008. [6]

[edit] Hardware

See also: Close to Metal

The Radeon series graphics processors are 32-bit single-precision floating point vector processors. Due to the highly parallel nature of vector processors, these processors have had a huge impact in specific data processing applications. The mass client project Folding@Home has reported speed improvements of 20 to 40 times using an R580-based graphics card. [7]

The Radeon R580 core includes a total of 48 pixel and vertex shaders, which become parallel processors in floating-point calculations. The ATI FireStream add-on card utilizes the PCI Express x16 interface to provide 8 GiB/s bandwidth. The card is equipped with 1 GB GDDR3 local memory while the GPU runs at 600 MHz core frequency and 1300 MHz memory frequency. The core has the ability to execute 512 threads simultaneously (Simultaneous multithreading, SMT), at a rated TDP of 165 W. The main difference between the AMD FireStream and ordinary Radeon series video cards is that the stream processor on the FireStream lacks video output connectors.

The stream processing hardware comes with a hardware interface called THIN (Thin Hardware INterface), or Close to Metal (CTM, previously named Data Parallel Virtual Machine), to open the GPU architecture in addition to native instruction sets to program developers. This allows to direct control of the stream processors/ALUs and the memory controllers, and permits bypassing of the 3D API layer.

The AMD Stream Processing lineup saw an update to the latest GPU architecture (the Radeon R600) with the release of the latest-generation FireGL video cards on August 7, 2007, which are also capable of stream processing. The architecture was manufactured on the same 80 nm fabrication process node as R580, with more parallel processors and stream processing units. In addition, the maximum GDDR4 memory was increased to 2 GB, providing a maximum of 128 GiB/s of memory bandwidth. The R600 XTX core-based FireGL products released (FireGL V8600 and FireGL V8650) consume more power than the first-generation ATI FireStream, with rated thermal design powers (TDP) of under 225 W and over 255 W respectively.

The second generation, the AMD FireStream, is based on the RV670 core and is constructed using a 55 nm fabrication process. It features industry's first hardware-based support for double-precision floating-point numbers, asynchronous DMA (giving the stream processors and onboard memory the ability to exchange data without CPU intervention), memory export functionality, and reduced power consumption (less than 150 Watts with 2 GB GDDR3 memory onboard on a PCI-E 2.0 interface, providing 16 GiB/s device I/O bandwidth). [8]

[edit] AMD stream processing lineup

The hardware specifications of stream processors released by AMD (and previously ATI) are summarized as follows:

Generation Model Video card
equivalent
GPU Core Threads
max.
Core Memory Raw processing
power (GFLOPS)
TDP (W) Others
Shaders
(SPUs) NB1
Clock
(MHz)
Bandwidth (GiB/s) Type Bus width
(bit)
Amount
(MiB)
Clock
(MHz)
FP32 FP64
1st NB2 580 [6]/2U [9] Radeon X1900 XTX R580 512 48 600 83.2 GDDR3 256 1024 650 375 N/A 165 N/A
N/A NB2 FireGL V8650 R600 ? 64
(320)
700 128.0 GDDR4 512 1024 1000 475 N/A >225 First FireGL cards
to support Stream Processing
FireGL V8600 2048 <255
2nd NB2 9170 [8] Radeon HD 3870 RV670 ? 64
(320)
775-800 51.2 GDDR3 256 2048 800 497-500 125-250 NB3[10] <150 Double precision
FP support
3rd NB2 9270? Radeon HD 4870 RV770 ? 160
(800)
750  ? GDDR5 256  ?  ? ≥1000 NB3 ≥250 NB3 ≥150 release on 06.25.2008

Notes:

NB1: The number of Stream Processing Units (SPU) can only be applied to DirectX 10-compatible hardware, which contains unified shaders (implemented in products based on the Radeon R600 and higher architectures, in which there are 5 ALUs in each shader, 4 for MADD/ADD/MUL/integer ADD/dot product and 1 for transcendental functions), making 320 Stream Processing Units in 64 unified shaders. Also note that the Stream Processing Units in ATI hardware implementations is architecturally different from NVIDIA's implementation of Stream Processors in Tesla products. The SP in NVIDIA's implementation have a higher clock frequency (2.35x or higher) than the other parts of the core, while SPUs in ATI's implementation have the same clock frequency as the core.
NB2: The first generation of products originally used the ATI FireStream brand, and were re-branded as AMD Stream Processor after the brand reconstruction act that was followed by AMD's acquisition of ATI. AMD refers to the Radeon RV670-based AMD FireStream 9170 because no R600-based AMD Stream Processors were released under the stream processing lineup (although prototype cards were publicly demonstrated with similar configurations as the FireGL V8650 without video output capabilities). Since the FireGL 2007 series, the high-end and ultra high-end FireGL products have implemented stream processing support.
NB3: Estimated figure.

[edit] Software

The AMD FireStream was launched with a wide range of software platform support. One of the supporting firms was PeakStream (acquired by Google in June 2007), who was first to provide an open beta version of software to support CTM and AMD FireStream as well as x86 and Cell (Cell Broadband Engine) processors. The FireStream was claimed to be 20 times faster in typical applications than regular CPUs after running PeakStream's software[citation needed]. RapidMind also provided stream processing software that worked with ATI and NVIDIA, as well as Cell processors.

[edit] Software Development Kit (SDK)

AMD first released its Stream Computing SDK (v1.0), in December 2007 under the AMD EULA, to be run on Windows XP.[11] The SDK includes "Brook+", an AMD hardware optimized version of the Brook language developed by Stanford University, itself a variant of the ANSI C (C language), open-sourced and optimized for stream computing. The AMD Core Math Library (ACML) and AMD Performance Library (APL) with optimizations for the AMD FireStream and the COBRA video library for video transcoding acceleration will also be included. Another important part of the SDK, the Compute Abstraction Layer (CAL), is a software development layer aimed for low-level access, through the CTM hardware interface, to the GPU architecture for performance tuning software written in various high-level programming languages.

[edit] Advantages

According to an AMD-demonstrated system [12] with two dual-core AMD Opteron processors and two Radeon R600 GPU cores running on Microsoft Windows XP Professional, 1 teraflop (TFLOP) can be achieved by a universal multiply-add (MADD) calculation. By comparison, an Intel Core 2 Quad 3.0 GHz processor can achieve up to 48 GFLOPS.

Recent demonstrations showed that, in Kaspersky SafeStream anti-virus scanning tests optimized for AMD stream processors, the system with two AMD stream processors with dual Opteron processors spotted 6.2 Gbit/s (775 MiB/s) bandwidth, 21 times faster when compared to other dual-processor systems. The stream processor systems also showed only 1-2% CPU utilization, which indicates significant floating-point offloading from the CPU to the stream processor [13].

[edit] Limitations

  • Compared, for example, to traditional floating point accelerators such as the 64-bit floating point (FP64) CSX600 math processor from ClearSpeed that is used in today's supercomputers, current and older GPUs from ATI (and NVIDIA) are running on 32-bit processors with only single-precision data capabilities. [14]
    • Instead of the 64-bit double-precision capability of supercomputers [15], the second generation of stream processors (the AMD FireStream 9170) is able to handle double-precision data. This is a result of FP32 filtering support contained as part of the requirements of the DirectX 10.1 API. However, the double precision operations (frequently used in supercomputer benchmarks) can achieve only half of the performance in theory compared to single precision operations, the actual figures may be lower, as the GPU do not have full double-precision units implemented.
  • Recursive functions are not supported.
  • Only bilinear texture filtering is supported; mipmapped textures and anisotropic filtering are not supported at this time.
  • Various deviations from the IEEE 754 standard. Denormal numbers and signaling NaNs are not supported; the rounding mode cannot be changed, and the precision of division/square root is slightly lower than single-precision.
  • Functions cannot have a variable number of arguments. The same problem occurs for recursive functions.
  • Conversion of floating-point numbers to integers on GPUs is done differently than on x86 CPUs; it is not fully IEEE-754 compliant.
  • Doing "global synchronization" on the GPU is not very efficient, which forces the GPU to divide the kernel and do synchronization on the CPU. Given the variable number of multiprocessors and other factors, there may not be a perfect solution to this problem.
  • The bus bandwidth and latency between the CPU and the GPU may become a bottleneck, which may be alleviated in the future by introducing interconnects with higher bandwidth.

[edit] See also

[edit] References

  1. ^ AMD Press Release
  2. ^ ExtremeTech report, retrieved July 17, 2007
  3. ^ AMD “Close to Metal” Technology Unleashes the Power of Stream Computing: AMD Press Release, November 14, 2006.
  4. ^ ATI DPVM SIGGRAPH 2006 sketchPDF (134 KiB), ATI DVPM SIGGRAPH 2006 PresentationPDF (671 KiB)
  5. ^ AMD Press Release, retrieved November 12, 2007
  6. ^ a b AMD WW HPC 2007 presentation PDF (8.81 MiB), page 37 of 53
  7. ^ AnandTech report: ATI's Stream Processing & Folding@Home, September 30, 2006
  8. ^ a b Business Wire coverage, retrieved November 8, 2007
  9. ^ ATI Vendor ID page, retrieved February 26, 2008. "Product name, GPU, PCI Device ID: ATI FireStream 2U, R580, 724E; ATI FireStream 2U Secondary, R580, 726E"
  10. ^ AMD's RV670 does double-precision at half the speed. Tigervision Media (1 February 2008).
  11. ^ Stream Computing SDK download page and Stream Computing SDK EULA, retrieved December 29, 2007
  12. ^ HardOCP report, retrieved July 17, 2007
  13. ^ The Inquirer report, retrieved September 12, 2007
  14. ^ Universit¨at Dortmund, Fachbereich Mathematik research: Accelerating Double precision on GPUs (Proceedings of ASIM 2005), Dominik Goddeke, Robert Strzodka, and Stefan Turek. 18th Symposium on Simulation Technique, 2005.
  15. ^ TGDaily report: Nvidia activates a supercomputer in your PC, February 16, 2007

[edit] External links

Languages