Title: Analyses of how code organization impacts development-time processes
Author: Damian Rouson, Scalable Computing R&D, Sandia National Laboratories
Leading-edge computational science increasingly requires multidisciplinary teams constructing multi-physics models. As the number of codes in a coupled solver grows, the process of scaling up to hundreds of program units (e.g., procedures, modules, components, or classes) impacts project budgets and timelines at least as much as the process of scaling up to hundreds of execution units (e.g., processors, processes, threads, or cores). After making this argument quantitative by combining Amdahl's Law with the Pareto Principle, this talk will bring an assortment of analytical tools to bear on the question, “How does the high-level organization of a code impact development-time processes?” The tools range from established object-oriented design metrics to new computational complexity estimates applied to debugging and information entropy arguments applied to developer communications. The approach to be analyzed involves defining an abstract data type (ADT) calculus comprising scalar-, vector- and tensor-field ADTs that support a set of user-defined algebraic and integro-differential operators. It will be demonstrated that ADT calculus leads to highly cohesive, loosely coupled abstractions that reduce bug search times and interface information content. The talk will also present the application of ADT calculus to problems ranging from particle dispersion in magnetohydrodynamics to quantum vortex interactions with normal fluid turbulence and electromagnetic wave scattering in the atmospheric boundary layer.