Process Overview
The process of profiling, assessment and modification aimed at improving computational performance is iterative in nature.
Key points:
- The application code under investigation had previously run in production on the KNC-based Stampede cluster at TACC, although there were some performance issues on that system arising from memory bottlenecks. The PIs were interested in porting it to Stampede2 and optimizing performance for that architecture.
- Optimization for a particular system requires knowledge of the architecture of that system, and different profiling tools probe different aspects of a program's interaction with that architecture.
- Profiling is largely implemented by specifying various compiler options, which result in performance diagnostics being produced when the program is run. Additional tools are available to assist the user in interpreting these diagnostics.
- Code optimization is an iterative process, alternating between performance assessment and modification of compiler options, code directives, and the core of the program itself. Coding practices that help to improve performance are described at length in the Cornell Virtual Workshop Code Optimization materials.