Exposing bottlenecks and scalability trends of parallel programs through profiling and visualization
profiling and visualization tools, parallel code optimization, performance scaling, high-performance computing
Taking advantage of the growing number of cores in supercomputers to increase the performance of parallel programs is a challenge. Scalable programs enable performance to scale for larger problems or larger computer systems. Many advanced profiling tools have been developed to assist programmers in the process of analyzing data related to the execution of their program. Programmers can act upon the information generated by these data and make their programs reach higher performance levels. However, the information provided by profiling tools is generally designed to optimize the program for a specific execution environment with a target number of cores and a target problem size. Therefore, writing scalable parallel programs is even harder because existing profiling tools target performance and not scalability. A code optimization driven towards scalability rather than specific performance requires the analysis of many distinct execution environments instead of details about a single environment. Intending to provide more useful information for the analysis and optimization of code for parallel scalability, this work introduces the tool kit Parallel Scalability Suite (PaScal Suite). It is composed of two distinct and independent software modules: Analyzer and Viewer. PaScal Analyzer profiles parallel code running on distinct execution environments in a simpler and less intrusive than conventional profiling tools. PaScal Viewer offers visual support to identify parallel scalability trends of the whole program, or parts of it when running on scaling parallel environments with scaling problem sizes. This tool kit allows identifying bottlenecks and performance scaling of parallel programs through profiling code and graphic visualization of execution time variation. It presents a novel and productive way to visualize scalability trends of parallel programs.