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.

错误:搜索内容不能为空,请输入英文关键词
错误:关键词超出字数限制,请精简
高级检索

Augmentation of MPI Traces Using Selective Instrumentation

  • Sebastian Kreutzer,
  • Josep Pocurull Serra,
  • Christan Iwainsky,
  • Marta Garcia Gasulla,
  • Christian Bischof

摘要

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.