A proposal of operation history management system for source-to-source optimization of HPC programs
Abstract
To optimize various high performance computing (HPC) programs on complex supercomputer architectures source-to-source optimization tools are becoming important to support network-architecture-specific and application-specific performance optimization in addition to compiler optimizations. Because of try-and-error nature of performance optimization work and complex relationships among optimizations, programmers often need to evaluate effectiveness of many combinations of their optimizations on the target architecture. When programmers optimize their program by both source-to-source optimization tool and manual editing, an issue, called, "reapplication conflicts," can occur. To optimize HPC programs, a programmer modifies some code to apply optimizations by manual editing and automatic conversion by source-to-source tool and, compiles it, and executes it to confirm the effects of the optimizations. If it is found that an earlier optimization is ineffective, the code should return to the point before the ineffective optimization, the optimization should be removed or replaced, and any succeeding operations that were confirmed to be effective should be reapplied. This can cause the "reapplication conflicts," because the succeeding operations were performed on different source code. Current version management systems support this conflict only for manual code optimizations, but do not support it for automatic conversions by source-to-source optimization tools. We propose an algorithm to resolve reapplication conflicts, and a new user interface to show the status and necessity of the reapplications. A user can select and modify any earlier operation, and the succeeding operations are automatically reapplied as needed to produce a new version without using explicit branch and merge operations by using the proposed algorithm. We also report our prototype developed on the Eclipse framework. Copyright 2009 ACM.