Large computer software is based on programming abstractions, e.g., functions and object-oriented types, to organize computation and data, which are in turn parallelized by invoking a variety of lower-level library support. A correct and efficient software implementation requires meticulous attention to coding details and is often error-prone. However, these implementations frequently need to be adapted to run on different hardware platforms as part of the software evolution and maintenance process. This project develops new cutting-edge compiler technology to automatically enhance the parallelization efficiency of large computer software, thereby simultaneously enhancing their productivity, correctness assurance, performance, and hardware portability. This project is aligned with object-oriented design principles in modern software engineering and therefore is expected to impact a modern software practices by enabling automatic exploration of alternative parallelization and data structure designs for better performance, maintainability, and hardware portability. The compiler toolsets developed in this project will be disseminated open source and will be used as an educational toolkit in the teaching of programming languages, compilers, high performance computing, and parallel programming courses.

The research methodology of this project explores a new scope of optimization at the user-defined abstraction level, by grouping and encapsulating related operations into hierarchies of abstractions, and by adapting a set of concepts traditionally used in the practice of software engineering, specifically abstract data types, abstraction adapters, and application abstraction hierarchy, to automatically discover higher-level semantics of user-defined abstractions and to isolate algorithm-level structures and logistics from their lower-level implementations. Pattern-driven analysis techniques are then developed to automatically discover a whole-application task graph, and coordinated optimizations are applied across abstraction boundaries to maximize overall application efficiency. A uniform interface is designed to concisely document the higher-level semantics of abstractions. Empirical performance tuning is used to support the performance portability of applications on a variety of modern computing platforms.

This award reflects NSF's statutory mission and has been deemed worthy of support through evaluation using the Foundation's intellectual merit and broader impacts review criteria.

Agency
National Science Foundation (NSF)
Institute
Division of Computer and Communication Foundations (CCF)
Type
Standard Grant (Standard)
Application #
1910488
Program Officer
Almadena Chtchelkanova
Project Start
Project End
Budget Start
2019-10-01
Budget End
2022-09-30
Support Year
Fiscal Year
2019
Total Cost
$499,510
Indirect Cost
Name
University of Colorado at Colorado Springs
Department
Type
DUNS #
City
Colorado Springs
State
CO
Country
United States
Zip Code
80918