Thursday, July 30, 2009

Stream Computing 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.

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:

  1. A high degree of arithmetic computation per system memory fetch
  2. 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.


Posted via web from swathidharshananaidu's posterous

No comments:

Post a Comment