Abstract: The Exascale Computing Project presents a unique opportunity for co-design across application, software, and hardware development. To help drive this co-design effort, many application teams have developed proxy applications as models for their production codes. These proxy applications are used as test code for early hardware and software, and in some cases, they are driving the development of the production code.
In order to be successful models, these proxy applications must be simple yet flexible and faithfully represent the intended aspects of the scientific application. To understand their representativeness, we will discuss techniques for conducting performance analysis to identify an application’s hardware bottlenecks. This will focus on collecting hardware counter data with HPCToolkit augmented with data from other tools, to effectively understand the performance bottlenecks applicable to each algorithm. Additionally, we will discuss some design choices that can help to maximize the usefulness of these applications, and how some of these proxy applications have been successfully utilized for software technology development.