This topic contains a number of overview questions concerning AMD's Stream computing initiative. We put them here to facilitate conversations with our developer partners and anyone interested in general computing on GPU hardware.
Q: What is stream computing?
A: 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
Q: How does stream computing differ from computation on the CPU?
A: 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.
Q: How does AMD's stream computing address the IEEE754 standard for double precision floating point computation?
A: 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.
Q: What type of programming model does AMD use for AMD FireStream?
A: 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.
Q: What happened to AMD's CTM?
A: 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.
Q: Which applications are best suited to Stream Computing?
A: 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.
* 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
Q: Will future stream computing architectures force me to rewrite my applications?
A: 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 ATI Stream 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.
Q: Is stream computing a return to the old co-processor days?
A: 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.