Software tools are important weapons in the programmer’s fight against errors. As the complexity of systems grows, there is an increasing requirement for tool developers to produce more sophisticated assistance. The tuning and analysis utilities (TAU) system provides instrumentation of user code in a variety of different languages, along with support for efficient execution profiling and tracing.
This paper reports on the implementation of an extension to TAU’s Fortran capabilities to allow for the detection of memory leaks within a possibly high-performance application. By adding instrumentation code that records each allocation and deallocation, the tool can obtain detailed information of where each request for memory occurs (source line and call path). The resultant profile information is then processed to provide the user with comprehensive details of memory usage in general, and memory leaks in particular.
Because the instrumented code can still be compiled with optimization, this approach results in a very small increase in execution time (typically less than one percent). Results from analyzing a distributed application are also presented.
The paper is well written and is easily accessible to both tool writers and users, although there is very little general background information on the TAU system. Both the paper and the system should be of interest to serious Fortran developers.