It is well-known that most applications do not exploit the full performance potential of computer hardware. A promising new approach for addressing some of these problems is provided by library generators. Although all library generators have much in common, there is currently little code reuse in their implementation. This project will develop an infrastructure, called Proteus to generate highly optimized libraries for four important problem domains: dense linear algebra, sorting, data mining, and network packet processing. The platforms of interst for these environments include sequential processors with deep memory hierarchies, multi-core systems that provide small-scale shared-memory parallelism, and custom network processors.
Research advances on several fronts are required to make Proteus a reality: a simple domain language for linear algebra in the proposal and appropriate DSL's for data mining and network packet processing. Once domain-specific optimizations are done, the programs will be translated into a lower-level language called the X language, to be developed under the project, that will represent in a compact way the search space as well as the strategy for adapting the code to the hardware. Proteus will contain tools for gathering information about the target machine, for guiding the selection process either statically or dynamically, for implementing domain-independent optimizations of the X code, and for generating C code as the final output.
The Proteus infrastructure will enable rapid prototyping of library generators for different domains. The libraries that will beproduced in the four different domains will be useful and interesting in their own right. In addition, tools will be developed for gathering information about the target machines and the computing environment, can be used by themselves in other projects.