Graphical views of parallel programs

K. Schwan, James W. Matthews · ACM SIGSOFT Software Engineering Notes · 1986

Large, parallel application programs are difficult to design and to implement .On e difficulty is the potential complexity of the interactions among the large number o f separable components in such programs .In this paper, a relational approach t o maintaining and visualizing such components and their interactions is explored .Specifically, we develop a system with which programmers can construct and display multiple, complementary or alternative views of a single parallel program usin g a uniform program model and a single set of primitives for view construction an d manipulation .Two sample alternative views of a program may display its communication structures or the data flow among its components .A sample view tha t complements the display of communication structures is one that describes th e detailed attributes of a communicating component .The program visualization system described is implemented using the Ingres relational database running on a VAX llj 180 TM and a SUN TM workstation . . Introductio nLarge application programs consist of many components of differing functionality .For parallel programs, each component may in turn consist of multiple processe s internally structured as sets of modules .During the steps of program design , specification, implementation, compilation, linking, loading, execution, and debugging, programmers must explicitly keep track of that diversity of components an d of various interactions among them .Examples are the interactions between module s specified by their interfaces l, 2 , the cooperation and communication betwee n processes 3 , and the mapping of processes to multiple processors of the underlyin g parallel architecture`t' 5 .In each such step and even within a single step, th e relevance and visibility of these interactions change .For example, when implementing a specific module, module interactions are not of interest to the programmer .Similarly, certain information about the program known during program development, such as its syntax trees, may not be relevant during program execution .However, knowledge of the program 's parallel structure and control and data flo w within this structure is useful for performance analysis 5, ", 4 and for run-tim e debugging .Modern software tools for program development and execution do not and shoul d not make visible all information concerning a program7' 8, 9 .However, when writin g and testing experimental, parallel software l0 , programmers should be given th e choice to inspect any program information they consider useful .That choice doe s not exist in most current systems .Furthermore, current systems force programmer s to view textual representations of such information, which has several shortcomings :• information may be `well hidden' within the text, in that much wor k must be done to extract it ; and ▪ textual representations are often awkward", 12 as in the case of tex t that describes inter-process communication, where programmers must in-

Read the paper · More papers on PaperTik