Tracking a Value's Influence on Later Computation November 01, 2013
Understanding how a program behaves is important for effective program development, debugging, and optimization, but obtaining the necessary level of understanding is usually a challenging problem. One facet of this problem is to understand how a value (the content of a variable at a particular moment in time) influences other values as the program runs.
To help developers understand value influence for their programs, we are developing a tool that allows a user to tag a value as being of interest, and then track the influence of that value as it, or values that were derived from it, are used in later computation, communication, and I/O. We believe that understanding how a value's influence propagates will enable algorithm designers to more easily identify optimizations such as the removal of unnecessary computation and communication. Our tool supports tracking value influence in multithreaded programs, and we are currently implementing support for applications that use MPI two-sided and collective operations for communication and synchronization.
This work is being done as part of the Institute for Sustained Performance, Energy, and Resilience (SUPER) project of the DOE Office of Science's Scientific Discovery through Advanced Computing program.
ORNL Team Member: Phil Roth