Computer Science > Distributed, Parallel, and Cluster Computing
[Submitted on 31 Oct 2018 (this version), latest version 11 Feb 2019 (v2)]
Title:Making root cause analysis feasible for large code bases: a solution approach for a climate model
View PDFAbstract:Applications that simulate complex physical processes can be composed of millions of lines of code. For such complex model codes, finding the source of a bug or discrepancy in output (e.g., from a previous version, alternative hardware or supporting software stack) is non-trivial at best. Although there are many tools for program comprehension through debugging or slicing, few (if any) scale to a complicated model such as the Community Earth System Model (CESM$^{TM}$). Therefore, to enable developers to trace a problem detected in the model output to its source, we devise a series of techniques to reduce the search space to a tractable size. The first step determines which CESM output variables are most affected by a given bug. To find where these output variables are computed in the code, we construct a directed graph of internal variable relationships. We introduce a form of hybrid program slicing which integrates static, backward slicing with code coverage information to extract a subgraph consisting of relevant variable relationships. Finally, we partition the subgraph into communities, and identify nodes in each community that are central to information flow. After reducing the search space and ranking nodes by centrality, runtime variable sampling becomes feasible. We use examples of simulation output from CESM to illustrate how sampling can be performed as part of an efficient iterative refinement procedure to locate error sources. This process is also effective in complex scenarios such as sensitivity to CPU instructions.
Submission history
From: Daniel Milroy [view email][v1] Wed, 31 Oct 2018 17:45:10 UTC (8,223 KB)
[v2] Mon, 11 Feb 2019 05:33:50 UTC (8,864 KB)
Bibliographic and Citation Tools
Bibliographic Explorer (What is the Explorer?)
Litmaps (What is Litmaps?)
scite Smart Citations (What are Smart Citations?)
Code, Data and Media Associated with this Article
CatalyzeX Code Finder for Papers (What is CatalyzeX?)
DagsHub (What is DagsHub?)
Gotit.pub (What is GotitPub?)
Papers with Code (What is Papers with Code?)
ScienceCast (What is ScienceCast?)
Demos
Recommenders and Search Tools
Influence Flower (What are Influence Flowers?)
Connected Papers (What is Connected Papers?)
CORE Recommender (What is CORE?)
arXivLabs: experimental projects with community collaborators
arXivLabs is a framework that allows collaborators to develop and share new arXiv features directly on our website.
Both individuals and organizations that work with arXivLabs have embraced and accepted our values of openness, community, excellence, and user data privacy. arXiv is committed to these values and only works with partners that adhere to them.
Have an idea for a project that will add value for arXiv's community? Learn more about arXivLabs.