"CoroWare was able to adjust to our engineering culture and efficiently contribute to our stream processing editor. The quality of their delivery and communication was consistently top notch" - Larry Ayres, VP of Engineering, MetraTech

Parallel Programming


CoroWare’s work in parallel programming encompasses developing stream processing tools and hardware-based acceleration for several software vendors and R&D groups.

Stream Processing is a programming model that allows for easier, faster and more efficient execution of data-processing algorithms. It provides a mechanism for speeding up applications that expose the following three characteristics: compute intensity, data parallelism and data locality.


Compute-intense applications can be recognized by their compute to I/O ratio. When an application loads or stores a piece of data rarely compared to the number of computations performed on it, the application is considered compute-intensive. Compute Intensive algorithms can provide their results dramatically faster when developed with the correct know-how, thus reducing wait times and costs.

Applications are said to be data parallel when the operations they perform on a dataset can be applied on each of its data items independently from the others. Data parallelism allows applying an operation on several data items at the same time, providing huge speed gains when compared to a traditional approach.

Finally, an application exposes data locality when the data it produces is read or written at most once or twice and then never again. This is very common in signal processing applications, such as video and audio filters.

If your application fits these criteria, you may consider a stream-processing implementation as it will provide dramatic speedup times while reducing infrastructure costs.

MORE INFORMATION
Stream_processing
Designing the flow of computation so it can be parallelized
GPGPU
General Purpose Computing on many-core hardware
Getting started on CUDA
Check out the extensive show case from NVIDIA CUDA
OpenCL
Open Standard for Parallel Programming
ATI Stream SDK
ATI version of CUDA



CUDA the Movie
See how we accelerated a vector field calculation with CUDA
(our demonstration on YouTube)





Check out CoroWare’s stream processing whitepaper in the Linux Journal, number 200.

Download the CUDA source code described in the Linux article.