2. Performance Analysis: From Art to Science
Jesús Labarta, Judit Giménez · Society for Industrial and Applied Mathematics eBooks · 2006
Proper identification of the causes of inefficiency in parallel programs and quantification of their importance are the basic steps to optimizing the performance of an application. Performance analysis is often an art, where the skill and intuition of the analyst play a very relevant role and which requires a good understanding of how all the levels of a system (from processor architecture to algorithm) behave and interact. Proper analysis also requires measurement instruments capable of capturing the information to validate or reject the hypotheses made during the analysis cycle. The difficulty and global nature of the problem itself and the limitations of the instruments contribute to the view of performance analysis as an art. Improving the power of our instruments is a necessary step to letting analyses proceed based on measurements rather than on feelings. This chapter discusses some of the issues that are relevant to improving current practice in this field. Many of these issues have to do with the actual power of the analysis tools (flexibility to compute and display performance indices, precision, scalability, instrumentation overhead, methodology), although other aspects, e.g., cultural, economical, are also of key importance. The chapter looks at these issues from the perspective of a specific performance analysis environment around the Paraver visualization tool, extracting from the experience in its development and use some general observations applicable to many other approaches. Parallel architectures and programming promise increasingly powerful computing capabilities delivered to users, enabling them to target larger and more complex problems. Unfortunately, the expected linear increase in performance with the number of processors very often is not achieved. Immediately the question arises of why it happens or how to really meet expectations. In other situations, the user may be sufficiently happy with the achieved performance without realizing that the potential of the machine and her or his algorithm may be higher than actually delivered.