In response to the need for high-performance scientific software, we propose to study ways to ease the production of optimized matrix algebra software. Each step of the code development process presently involves many choices, most requiring expertise in numerical computation, mathematical software, compilers, or computer architecture. The process of converting matrix algebra from abstract algorithms to high-quality implementations is a complex one. When leveraging existing high-performance numerical libraries, the application developer must select the appropriate numerical routines and then devise ways to make these routines run efficiently on the architecture at hand. Once the numerical routine has been identified, the process of including it into a larger application can often be tedious or difficult. The tuning of the application itself then presents a myriad of options generally centered around one or more of the following three approaches: manually optimizing code fragments; using tuned libraries for key numerical algorithms; and, less frequently, using compiler-based source transformation tools for loop-level optimizations. The goals of the proposed research are three-fold. First, we will construct a taxonomy of available software that can be used to build highly-optimized matrix algebra computations. The taxonomy will provide an organized anthology of software components and programming tools needed for that task. The taxonomy will serve as a guide to practitioners seeking to learn what is available for their programming tasks, how to use it, and how the various parts fit together. It will build upon and improve existing collections of numerical software, adding tools for the tuning of matrix algebra computations. Second, we will develop an initial set of tools that operate in conjunction with this taxonomy. In particular, we will provide an interface that takes a high-level description of a matrix algebra computation and produces a customizable code template using the software in the taxonomy. The template will aid the developer at all steps of the process from the initial construction of Basic Linear Algebra Subprogram (BLAS)-based codes through the full optimization of that code. Initially, the tools will accept a MATLAB prototype and produce optimized Fortran or C. Finally, we will advance the state-of-the-art in tuning tools by improving some of the tools included in the taxonomy, broadening their ranges of functionality in terms of problem domains and languages.

Project Report

The growing demand for accuracy and detail in results means that the size and complexity of scientific computations is increasing at least as fast as improvements in computer technology. Creating optimized computer programs requires programmers to have extensive knowledge of the factors influencing performance. The main goal of the Lighthouse project was to construct a taxonomy of available software that can be used to build highly-optimized matrix algebra computations. The taxonomy provides an organized anthology of software components and programming tools needed for that task. It serves as a guide to practitioners seeking to learn what is available for their programming tasks, how to use it, and how the various parts fit together. At present, Lighthouse incorporates dense linear solvers and eigensolvers from LAPACK and sparse linear solvers and eigensolvers from PETSc. Lighthouse is a prototype of a way to present and use software that is very different from the traditional download-build-install-learn model. It enables users to produce higher-quality numerical software faster beginning from high-level mathematical descriptions of computations. It will benefit society by producing better engineering artifacts more efficiently and dramatically expanding the accessibility of HPC software for non-experts, i.e., enabling "HPC for the masses". A production version of Lighthouse would lead to dramatic improvement in the productivity of scientists from multiple computational disciplines (e.g., physics, chemistry). It would also enable better computer resource use through automated generation and optimization of implementations. Intellectual Merit: Lighthouse provides a novel way to learn and effectively use numerical software through search-based interfaces to a rigorous taxonomic representation of the functionality of each included package. It contributes research on user interfaces and on an approach to optimizing both usability and performance of software. Broader Impact: Lighthouse provides for greater application performance, enabling both more discovery with available computing resources and greater productivity by application programmers. This project supported a postdoctoral research associate and a number of graduate and undergraduate research assistants, including several women, one minority, a first-generation college student, and a number of international students.

Agency
National Science Foundation (NSF)
Institute
Division of Computer and Communication Foundations (CCF)
Type
Standard Grant (Standard)
Application #
0917324
Program Officer
Balasubramanian Kalyanasundaram
Project Start
Project End
Budget Start
2009-09-15
Budget End
2013-08-31
Support Year
Fiscal Year
2009
Total Cost
$266,000
Indirect Cost
Name
University of Colorado at Boulder
Department
Type
DUNS #
City
Boulder
State
CO
Country
United States
Zip Code
80309