Performance and Power Analysis and Modeling

Performance analysis

We are working on several performance analysis activities at any given time, with a focus on different use cases which range from simple benchmarks to full-scale real HPC applications in a variety of domains.

Performance bounds modeling

The goal of performance bounds modeling is to determine what sections of code have performance that is memory bandwidth limited or instruction scheduling limited on a particular architecture. For example, in order to determine whether a code segment is memory bandwidth limited, the bounding tools estimates the memory bandwidth requirements of the code by computing the ratio between the number of floating-point operations and memory accesses, which can then be used to predict the maximum achievable performance for a given architecture. Performance bounds can be estimated through source code analysis, empirical testing, or a combination of these approaches.

Power and energy measurement and modeling

We are developing a general-purpose fine-grained power measurement system and associated software in- frastructure for measurement, analysis, and model creation. The ultimate goal is to provide a complete system that can be used to generate power or energy models based on more easily measured parameters (e.g., hardware performance counters). Instead of instrumenting the hardware of very large-scale parallel systems, our approach relies on adding sensors to just a few representative nodes and then creating empirical models of power or energy for applications or individual algorithms based on smaller-scale runs on the instrumented nodes, using performance counters as the independent variables. The models can be used for selecting algorithms, source code optimization (e.g., through autotuning), or runtime parameter tuning. Some initial examples of energy modeling for the Stream benchmark can be seen here.