Performance Tuning and Optimization
Tarek A. El-Ghazawi, William Carlson, Thomas Sterling, Katherine Yelick · 2005
This chapter focuses on optimizing UPC applications. Performance optimization relies on understanding the general computer architecture and programming model issues, and trying to write code that masks out the weaknesses and exploits the strengths of modern parallel computers. Many performance optimizations can be performed automatically by compilers and run-time systems. However some must be done explicitly by the programmer. In a new language like UPC, it will take time to have compilers that relieve the programmer from the burden of doing hand performance tuning. However, we expect, based on our experiences, that compilers and run time systems will continue to improve to the point that direct intervention by the programmer will become minimal. Until this happens, programmers should employ hand tunings that can perform self processing of local data, privatization of space, aggregation and prefetching of accesses, reduced synchronization when possible, and load balancing.