Array resizing for scientific code debugging, maintenance and reuse

  • Authors:
  • Corinne Ancourt;Thi Viet Nga Nguyen

  • Affiliations:
  • CRI - ENSMP, 35 rue Saint Honoré, 77305 Fontainebleau Cedex, France;CRI - ENSMP, 35 rue Saint Honoré, 77305 Fontainebleau Cedex, France

  • Venue:
  • PASTE '01 Proceedings of the 2001 ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering
  • Year:
  • 2001

Quantified Score

Hi-index 0.00

Visualization

Abstract

Software debugging, maintenance and reuse have to deal with many problems from Fortran scientific codes that do not fully respect the standard specification. Our study on Linpack, PerfectClub and SPEC95 benchmarks and several industrial software reveals a large number of unprecise variable declarations that prevent program analysis, verification and parallelization. Furthermore, they decrease the readability of programs and make reverse-engineering more difficult.This paper presents two different methods to compute the exact size of arrays in Fortran codes that have pointer-type \verb+REAL A(1)+ or assumed-size \verb+REAL A(*)+ declarations.The first method uses the relationship between actual and formal arguments from parameter-passing rules. New array declarations in the called procedure are computed with respect to the declarations in the calling procedures.The second approach is based on an array region analysis that gives information about the set of array elements accessed during the execution of code. This approach to array resizing could be applied to other languages without array declaration such as MATLAB and APL in order to reduce the execution overhead of dynamic test and resizing.Our two approaches are combined to yield very good results for Linpack, PerfectClub and SPEC95 benchmarks.