Application performance is determined by a combination of many choices: hardware, runtime environment, languages and compilers used, algorithm choice and implementation, and more. In this complicated environment, we find that the use of mini-applications, small self-contained proxies for real applications is an excellent approach for rapidly exploring the parameter space of all these choices. Furthermore, use of mini-applications enriches the interaction between application, library and computer system developers by providing explicit functioning software and concrete performance results that lead to detailed, focused discussions of design trade-offs, algorithm choices and runtime performance issues.

Related Projects
Hardware/Software Codesign for Exascale Computing
Hoekstra, Robert J.,