by C. Nikolau, T. Saridakis, and E. Markatos
ArrayTracer is a high-level, low-overhead Parallel Performance Analysis Tool which operates on applications written in Fortran and using PVM for inter-process communication.
Its basic characteristics are:
ArrayTracer is heavily based on compile time information. It produces as much trace information as possible, during the parsing of applications source code. The information that is dependent on run-time user input is captured by traces. Those traces are produced at execution time, according to the inserted instrumentation code. In current implementation, there are special processes (the collector-processes) which are dedicated in collecting traces from the running application. Figure above gives an overview on how ArrayTracer interacts with the running application.
The tracing procedure consists of four stages:
Preparation stage: The user defines the information to be traced (scalar variables, arrays, sub-arrays, loops, sub-routine calls, interprocess communication, etc.) and where to be traced (code-region where the trace will take place for each trace element).
Static Analysis stage: Applications source code is parsed, available trace information is extracted and instrumentation code is inserted to produce trace that depends on run-time input.
Trace Collection stage: Instrumented application is executed, produced traces are collected and stored in temporary trace files.
Trace pre-process stage: After applications execution, collected traces are pre-processed, correlated with the information extracted from source code during Static Analysis stage and sent to ArrayTracer's core module for further processing.
Selective tracing allows us to focus the analysis of the application's behavior on the parameters that interest the user, while the overhead introduced by the tracing procedure is kept at low-level. To evaluate the overhead introduced by ArrayTracer, we compare it with ATOM (Srivastava et al, 1994), an execution-driven tracing tool that is among the fastest available tracing tools.
Completion time of 3D-motion application for 10,000 successive movements: ArrayTracer versus ATOM
ArrayTracer introduces less overhead on the elapsed-time of the application when the user requests tracing of less than 35% of the memory accesses.
It is easier to request selective tracing with ArrayTracer than it is with ATOM, which cannot trace memory accesses in selected code-regions.
It takes longer (one to two orders of magnitude) to instrument the program with ATOM than it takes with ArrayTracer, increasing significantly the compilation time.
ArrayTracer is under development at ICS-FORTH by PLEIADES - the Parallel and Distributed Systems group. The tool module responsible for the application instrumentation and the traces collection has been implemented and is under testing. It runs on DEC-ALPHAs AXP workstations under DEC OSF/1 operating system.
The modules of trace-analysis and result visualization are still under implementation. We are also considering ways to improve the performance of the tool by adopting new approaches on the mechanism used for trace collection. The work on the ArrayTracer is part of the LYDIA research project (ESPRIT III P8144 - URL: http://www.ics.forth.gr/proj/pleiades/projects/LYDIA/)