Popis: |
Since different systems usually require different performance optimizations, an application code is likely “specialized” for a particular system configuration to fully extract the system performance. This is one major reason why migration of an existing application code, so-called legacy code migration, is so labor-intensive and error-prone especially in the high-performance computing (HPC) area. To make matters worse, the diversity of system architectures would increase the number of system configurations that have to be considered during the life of an application. As a result, the increasing system complexity and diversity will force programmers to further invest enormous time and effort on HPC application development and maintenance. For long-term software development and maintenance, an HPC application code should not be optimized for a particular system configuration. However, simply excluding system-awareness from the code just results in reducing the performance, because system-awareness can be regarded as the necessary information to exploit the performance of the target system. The goal of this project is to express system-awareness separately from the HPC application code to achieve high performance while keeping the code maintainability. To this end, we have been developing a code transformation framework, Xevolver, so that users can express system-awareness as user-defined code transformation rules separately from HPC application codes. By defining custom code transformations for individual cases, an HPC application code itself does not need to be modified for each system configuration and is transformed for each system by using the code transformations defined separately from the code. |