Automatic refactoring of Fortran applications

The proposal of refactoring applications mainly came about due to sequential algorithms that have room for improvement in terms of performance. Most sequential algorithms like matrix multiplication where the complexity is O(n3) can affect the overall execution time of a program when their size incre...

Full description

Saved in:
Bibliographic Details
Main Author: Chandrasehar Rajaseharan.
Other Authors: Stephen John Turner
Format: Final Year Project
Language:English
Published: 2012
Subjects:
Online Access:http://hdl.handle.net/10356/48454
Tags: Add Tag
No Tags, Be the first to tag this record!
Institution: Nanyang Technological University
Language: English
Description
Summary:The proposal of refactoring applications mainly came about due to sequential algorithms that have room for improvement in terms of performance. Most sequential algorithms like matrix multiplication where the complexity is O(n3) can affect the overall execution time of a program when their size increases. This can be improved if algorithms are transformed in such a way where the operations involving the array(s) in loops can be parallelized. In the context of the project, this parallelism is mainly achieved by two techniques, Array slicing and Fortran’s intrinsic functions in Fortran 90 where the former uses the technique of vectorization while the latter uses compiler-defined algorithms to parallelize array operations. A plugin developed using Eclipse and the Photran framework implements this process by identifying loops within programs where their array operations are refactored to either array sliced forms or Fortran’s intrinsic functions. This identification process includes data dependence analysis on the loops. Conclusively, profiling tests conducted on the implementation of these two techniques in two Fortran applications computing mathematical functions such as derivatives of a function and plotting a linear curve for Millikan experimental data highlight a maximum speedup of 2.99 as the size of the vectors involved in the application increase from 100 to 100000 for the first application and a maximum speedup of 1.73 as the size of the vectors increase from 20000 to 100000 for the second application.