Augmentation of MPI Traces Using Selective Instrumentation
摘要
Tracing tools provide detailed program execution timelines, aiding the identification of subtle performance issues. MPI-based tracing, as employed by Extrae, focuses on recording communication events, thus keeping the trace size manageable. However, analyzing the cause of detected issues can be difficult, as the limited information in the trace does not allow direct correlation to source code. In order to get this information, stack unwinding to a high depth may be required, which increases overhead and trace size. In this work, we present an alternative instrumentation-based approach relying on static call graph analysis. This approach identifies the functions correlating to the critical region in the trace based on the direct callers of the surrounding MPI events. The relevant call paths are then instrumented using LLVM’s dynamic instrumentation feature, enabling them to be recorded in the trace. The presented method is evaluated on test cases of the OpenFOAM computational fluid dynamics solver. Results show that our approach is applicable for very large call-graphs with over 400,000 functions, while displaying moderate runtime and trace size overheads.