Automated Programmable Code Transformation for Portable Performance Tuning
The authors present a framework which uses POET, an interpreted code transformation language, to effectively combine programmable control from developers, advanced optimizations by compilers, and flexible empirical tuning of optimizations to achieve portable high performance for scientific computing. The authors have extended ROSE, a C/C++/Fortran source-to-source compiler, to automatically analyze scientific computing benchmarks for memory performance optimizations. Instead of directly generating optimized code, the ROSE optimizer produces parameterized POET scripts as output. The auto-generated POET optimization script is then ported to different machines for portable performance tuning. The results show that this approach is highly effective, and the code optimized by the auto-generated POET scripts can significantly outperform those optimized using the ROSE compiler alone.