Los puntos clave no están disponibles para este artículo en este momento.
With the growing popularity of C++ in the HPC community and increasingly heterogeneous memory layouts it is ever more important to understand the runtime behavior of applications and their data structures. Data locality and access patterns play a central role when identifying potential for optimization. However, C++'s combination of efficient low level features and high level abstractions like STL containers make it difficult to reason about data accesses and the lifetime of objects. We present data-instrumenter, a source-to-source transformation tool that instruments containers as well as application code to efficiently gather runtime data while still preserving static information from the AST. We evaluate the tool with the C++ LULESH implementation and other applications of varying complexity. The gathered metrics are used to identify costly operations while density-based clustering detects outliers in the program execution. We find that data-instrumenter can fully observe the interactions between containers, elements and the application while still being portable and platform-independent.
Jungblut et al. (Fri,) studied this question.