Spiral Technology

The Problem

Evolution of processors (example Intel). CPU frequency has stalled; future performance gains will be due to parallelism.

The evolution of computing platforms is at an historic inflection point (see figure to the right). After years of exponential growth, CPU frequency has stalled due to physical limitations; future performance gains will only be achieved by increasing parallelism. The consequence for software development is dramatic: it signifies the end of free speed-up. The problem is particularly apparent in ubiquitous performance-demanding computing applications in science, signal/image processing, and communication. In these areas, developers are forced to constantly reimplement and reoptimize the same core functionality whenever a new processor generation is released. The key optimizations needed for optimal performance are parallelization, vectorization, and memory hierarchy optimizations. Decades of compiler research have left these problems unsolved for most computing functions. Even worse, in most cases, the compiler typically yields a 10-100x suboptimal performance (on a standard workstation) compared to the best hand-written code.

Spiral: Solution for Compute Functions

SpiralGen's award-winning technology Spiral overcomes these problems for performance-critical software components in signal processing and communication applications. Spiral automates major parts of the development and optimization effort. Spiral enables SpiralGen to achieve two seemingly conflicting goal, namely, providing processor-specific highly optimized code cheaper and dramatically faster as previously possible. As a result, SpiralGen's customers save both development cost and opportunity cost, as the transition to new, more capable platforms is accelerated. Further, SpiralGen's code is often faster than competing human-written code thus further accelerating applications for customers. As one example, Intel's library IPP contains a few thousand functions (collected in the ippg domain) produced by Spiral and tend to outperform their human-written counterparts.

A glimpse of the inner workings of the Spiral program generation system.
A glimpse of Spiral is shown in the figure to the left. Given the formally captured algorithm and platform knowledge, Spiral generates source code in several stages. Difficult optimizations such as parallelization and vectorization are performed using an internal domain-specific language and rewriting systems. Different implementation choices are systematically explored. The final output is highly optimized source possibly including vector intrinsics and explicit threading directives.