Abstract. Application performance is critical in high-performance computing (HPC), however, it is not considered in a systematic way in the HPC software development process. Integrated performance models could improve this situation. Advanced analytic performance modeling and performance analysis tools exist in isolation but have similar goals and could benefit mutually. We find that existing analysis tools could be extended to support analytic performance modeling and performance models could be used to improve the understanding of real application performance artifacts. We show a simple example of how a tool could support developers of analytic performance models. Finally, we propose to implement a strategy for integrated tool-supported performance modeling during the whole software development process.
MotivationHigh performance computing (HPC) software development differs from traditional software development in several aspects. In addition to the forus on reliability, correctness and productivity, HPC software development strives to achieve maximum performance. This is reflected throughout the whole development process and tool-chain. HPC libraries and APIs such as BLAS, LAPACK, and the Message Passing Interface (MPI) focus mostly on the highest performance and performance portability. HPC applications are mostly scientific codes that are usually dominated by floating-point and memory operations and are often regular. Languages such as Fortran and High Performance Fortran thus pick their default semantics (e.g., dense arrays) to support such regular scientific codes.In addition to the traditional software development tools such as debuggers and profilers, advanced (parallel) performance analysis tools are often necessary to understand the complex performance characteristics of HPC applications. Large scientific codes are often significant investments at a national level, but a clear software engineering methodology that integrates performance into all layers of the development process has not been established yet. The field of performance engineering [15] made some advances in this direction and first strategies exist to incorporate performance models into standard software development using UML [10,14].