Annotations for Productivity and Performance Portability
|Title||Annotations for Productivity and Performance Portability|
|Year of Publication||2007|
|Authors||Norris, B, Hartono, A, Gropp, WD|
|Series Title||Petascale computing: algorithms and applications|
In many scientific applications, significant time is spent in tuning codes for a particular high-performance architecture. Multiple approaches to such tuning exist, ranging from the relatively nonintrusive (e.g., by using compiler options) to extensive code modifications that attempt to exploit specific architecture features. In most cases, the more intrusive code tuning is not easily reversible and thus can result in inferior performance on a different architecture or, in the worst case, in wholly nonportable code. Readability is also greatly reduced in such highly optimized codes, resulting in lowered productivity during code maintenance. We introduce an extensible annotation system that aims to improve both performance and productivity by enabling software developers to insert annotations into their source code that trigger a number of low-level performance optimizations on a specified code fragment.