In this paper, we propose a methodology to address an important aspect of software porting that receives little attention, namely planning support. When a scientific application consisting of many subroutines is to be ported, the selection of key subroutines greatly impacts the productivity and overall porting strategy because these subroutines may represent a significant feature of the code in terms of functionality, code structure, or performance. They may as well serve as indicators of the difficulty and amount of effort involved in porting a code to a new platform. The proposed methodology is based on the idea that a set of similar subroutines can be ported with similar strategies and result in a similar-quality porting. By viewing subroutines as data and operator sequences, analogous to DNA sequences, we are able to use various bioinformatics techniques to conduct the similarity analysis of subroutines while mitigating NP-complete challenges of other approaches. To the best of our knowledge, we are one of the first to explore this bioinspired view of program to target the porting planning problem. In this paper, we describe our methodology and present a tool called Klonos to facilitate the execution of the methodology, which integrates to well known bioinformatics tools. As a proof of concept, we use Klonos to conduct experiments to find strategies for porting of several scientific benchmarks and applications. We also have identified some of the advantages and limitations of the bio-inspired view of a program code and the future work.
1073Besides these challenges faced by the application developers, many scientific applications tend to be long lived and comprise large code bases developed by a team of people and often outlive the involvement of any single developer. To maintain those applications is not an easy task, let alone to port them to the new system while the efficiency and correctness have to be guaranteed. To rewrite the entire application is too expensive and seems unrealistic. On the other hand, simulation platforms emerge at a frequency much higher than the lifetime of such application code bases, requiring at times fairly intrusive changes to fully benefit from the capabilities such platforms provide, which take years to develop. These changes are often made manually because of the lack of tool support. Automation of the process is rather impractical given its complexity, the level of tool support, and the lack of tool integration that automates user-driven porting strategies. Thus, the porting of scientific applications is both time consuming, labor intensive, and erroneous. Even an 'expert team' needs to start somewhere, this team will initiate the effort to restructure the code in order to exploit the new systems features, a very challenging error-prone process; the quality of the results will depend critically on the experience of the experts involved.In order to ease the effort for the software porting, we present a methodology to address an important aspect of software porting that receiv...