Understanding and Optimizing the Performance of Scientific Software
Speaker: Boyana Narris, University of Oregon
Presentation
Abstract
Understanding and tuning the performance of complex applications on modern hardware are challenging tasks, generally requiring expert knowledge of the algorithms, implementation, compiler optimizations, and underlying architecture. In this talk I will present approaches and tools that reduce the need for involving multiple experts during the development and performance optimization of scientific software. I will describe work in two main areas: performance modeling and semi-automated tuning of numerical computations.
Obtaining sufficiently detailed performance data and comparing it with the peak performance of an architecture represent one path to understanding the behavior of a particular algorithm implementation. A complementary approach relies on the analysis of the source code itself, coupling it with a simplified architecture description to arrive at performance estimates that can provide a more meaningful upper bound than the peak hardware performance. I will present the approach implemented in the PBound tool for estimating upper performance bounds of Fortran/C/C++ applications whose main goal is to partly automate the construction of performance models.
Beyond modeling performance, I will introduce the Orio auto tuning framework, which supports the rapid prototyping of domain-specific languages and code optimization for different target architectures. The main idea behind Orio is to enable the definition of new domain-specific languages or restrictions on existing languages while reusing many code optimization capabilities and empirical search approaches across different input languages. The goal of such languages is to raise the level of abstraction for expressing computations, which enables the generation and search of a much larger space of potential optimizations. Unlike other autotuning efforts, this approach forces developers to rethink their performance-critical algorithms and express them at the level most suitable for generating high-performing code on many architectures, including multicore CPUs to accelerators.
Biography
Boyana Norris received her B.S. in Computer Science at Wake Forest University in 1995 and her Ph.D. in Computer Science from the University of Illinois at Urbana-Champaign in 2000. She joined Argonne National Laboratory as a postdoctoral researcher in 1999 and continued working there through 2013 as an Assistant Computer Scientist and Computer Scientist. She is currently an Assistant Professor at the Department of Computer and Information Science at the University of Oregon. Her research in high-performance computing (HPC) focuses on methodologies and tools for performance reasoning and automated optimization of scientific applications, while ensuring continued or better usability of HPC tools and libraries and improving developer productivity. She has coauthored over 70 peer-reviewed publications on topics including performance modeling, automated performance optimization (autotuning) of parallel scientific applications, embedding of domain-specific languages into legacy codes, source-transformation-based automatic differentiation, adaptive algorithms for HPC, component-based software engineering for HPC, and taxonomy-based approaches to learning and using HPC libraries. In her computer-free time, Boyana likes to run unreasonable distances, read, garden, and spend time with her family.