Making Root Cause Analysis Feasible for Large Code Bases: A Solution Approach for a Climate Model

Large-scale simulation codes that model complicated science and engineering applications typically have huge and complex code bases. For such simulation codes, where bit-for-bit comparisons are too restrictive, finding the source of statistically significant discrepancies (e.g., from a previous version, alternative hardware or supporting software stack) in output is non-trivial at best. Although there are many tools for program comprehension through debugging or slicing, few (if any) scale to a model as large as the Community Earth System Model (CESM#8482;), which consists of more than 1.5 million lines of Fortran code. Currently for the CESM, we can easily determine whether a discrepancy exists in the output using a by now well-established statistical consistency testing tool. However, this tool provides no information as to the possible cause of the detected discrepancy, leaving developers in a seemingly impossible (and frustrating) situation. Therefore, our aim in this work is to provide the tools to enable developers to trace a problem detected through the CESM output to its source. To this end, our strategy is to reduce the search space for the root cause(s) to a tractable size via a series of techniques that include creating a directed graph of internal CESM variables, extracting a subgraph (using a form of hybrid program slicing), partitioning into communities, and ranking nodes by centrality. Runtime variable sampling then becomes feasible in this reduced search space. We demonstrate the utility of this process on multiple examples of CESM simulation output by illustrating how sampling can be performed as part of an efficient parallel iterative refinement procedure to locate error sources, including sensitivity to CPU instructions. By providing CESM developers with tools to identify and understand the reason for statistically distinct output, we have positively impacted the CESM software development cycle and, in particular, its focus on quality assurance.

[1]  John M. Dennis,et al.  Assessing Representativeness of Kernels Using Descriptive Statistics , 2017, 2017 IEEE International Conference on Cluster Computing (CLUSTER).

[2]  Rajiv Gupta,et al.  Hybrid slicing: an approach for refining static slices using dynamic information , 1995, SIGSOFT FSE.

[3]  Frank Tip,et al.  A survey of program slicing techniques , 1994, J. Program. Lang..

[4]  M E J Newman,et al.  Finding and evaluating community structure in networks. , 2003, Physical review. E, Statistical, nonlinear, and soft matter physics.

[5]  Ian Briggs,et al.  FLiT: Cross-platform floating-point result-consistency tester and workload , 2017, 2017 IEEE International Symposium on Workload Characterization (IISWC).

[6]  David W. Binkley,et al.  Program slicing , 2008, 2008 Frontiers of Software Maintenance.

[7]  Rajeev Motwani,et al.  The PageRank Citation Ranking : Bringing Order to the Web , 1999, WWW 1999.

[8]  M E J Newman,et al.  Community structure in social and biological networks , 2001, Proceedings of the National Academy of Sciences of the United States of America.

[9]  Allen D. Malony,et al.  The Tau Parallel Performance System , 2006, Int. J. High Perform. Comput. Appl..

[10]  Douglas W. Nychka,et al.  A new ensemble-based consistency test for the Community Earth System Model , 2015 .

[11]  Dorit Hammerling,et al.  Towards Characterizing the Variability of Statistically Consistent Community Earth System Model Simulations , 2016, ICCS.

[12]  William G. Griswold,et al.  A Comparative Study of Two Whole Program Slicers for C , 2001 .

[13]  Vikram S. Adve,et al.  LLVM: a compilation framework for lifelong program analysis & transformation , 2004, International Symposium on Code Generation and Optimization, 2004. CGO 2004..

[14]  Pearu Peterson,et al.  F2PY: a tool for connecting Fortran and Python programs , 2009, Int. J. Comput. Sci. Eng..

[15]  William R. Harris,et al.  Program analysis via satisfiability modulo path programs , 2010, POPL '10.

[16]  O. Sporns,et al.  Network hubs in the human brain , 2013, Trends in Cognitive Sciences.

[17]  Jorge A. Navas,et al.  Path-Sensitive Backward Slicing , 2012, SAS.

[18]  Haiying Xu,et al.  Quality Assurance and Error Identification for the Community Earth System Model , 2017, CORRECTNESS@SC.

[19]  Sheri Mickelson,et al.  A new ensemble-based consistency test for the Community Earth System Model (pyCECT v1.0) , 2015 .

[20]  Daniel B. Larremore,et al.  Systematic inequality and hierarchy in faculty hiring networks , 2015, Science Advances.

[21]  K.,et al.  The Community Earth System Model (CESM) large ensemble project: a community resource for studying climate change in the presence of internal climate variability , 2015 .

[22]  Devavrat Shah,et al.  Detecting sources of computer viruses in networks: theory and experiment , 2010, SIGMETRICS '10.

[23]  Elizabeth R. Jessup,et al.  Nine time steps: ultra-fast statistical consistency testing of the Community Earth System Model (pyCECT v3.0) , 2017 .

[24]  John M. Dennis,et al.  KGEN: A Python Tool for Automated Fortran Kernel Generation and Verification , 2016, ICCS.

[25]  K. Hashimoto,et al.  Selberg-Ihara’s Zeta function for $p$-adic Discrete Groups , 1989 .

[26]  L. Freeman Centrality in social networks conceptual clarification , 1978 .

[27]  Xiao Zhang,et al.  Localization and centrality in networks , 2014, Physical review. E, Statistical, nonlinear, and soft matter physics.

[28]  Aric Hagberg,et al.  Exploring Network Structure, Dynamics, and Function using NetworkX , 2008, Proceedings of the Python in Science Conference.

[29]  Josep Silva,et al.  A vocabulary of program slicing-based techniques , 2012, CSUR.

[30]  Maria A. Kazandjieva,et al.  A high-resolution human contact network for infectious disease transmission , 2010, Proceedings of the National Academy of Sciences.

[31]  Guangwen Yang,et al.  Evaluating statistical consistency in the ocean model component of the Community Earth System Model (pyCECT v2.0) , 2016 .