next up previous
Next: Our Approach Up: PDCS'94 Conference Previous: PDCS'94 Conference

Introduction

Debugging parallel programs is inherently more difficult than their sequential counterparts. Large amount of trace data, confusing effects of asynchrony, and the evasiveness of consistent global states are some of the hurdles that a debugger must handle in order to provide the user with useful information regarding the execution of the program that can help locate an error. Event-based behavioral abstraction provides a mechanism to handle the volume of data by allowing users to specify the program behavior in a hierarchical fashion, which is then compared with the actual execution [2,3,14,16]. Transformations of logical time helps to filter out the perturbations of physical asynchrony, and allow the user to examine the program behavior from different temporal perspectives [14,19,6]. Many systems try to attack the problem of comprehending large amount of data, by providing the user with an animation system [14,,]. However all the approaches suffer from two major drawbacks: firstly they do not provide sufficient feedback, nor do they scale up for massive parallelism. Modeling languages using complex recognition strategy are good for expressing very complex behavior succinctly, but are terribly inept at giving informative feedback on abstractions that do not correspond to the observed behavior. Processor-oriented animation schemes, although informative when the observed behavior matches the expected pattern, do not scale well to even moderate number of processors (such as 64), and depends on the user for the specification of the processor placement [14,]. Animation schemes that do not need any user assistance in the placement of processors [] only provides animation of primitive events that are susceptible to the effects of physical asynchrony: even with logical time manipulation such animations are hardly useful, due to the lack of high level abstraction mechanisms. We address both these problems in our new debugger Ave/Ariadne.

Ave/Ariadne is an integrated debugging environment. Ariadne is the modeling component that provides a simple language to specify behavioral abstractions as patterns of events in logical time. The patterns are detected by a collection of finite-state recognizers. Ave is the scalable visual feedback engine, which provides feedback on complete and partial matches, highlighting the error path if the match fails. There are four salient features of Ave/Ariadne environment: The first is the ability to provide feedback on failures, the second is the scalability of the patterns, the third is the conciseness of its modeling language, and the fourth is the provision for incremental exploration of the program execution from different perspectives.

Debugging is an exercise in exploration. Programmers often do not anticipate bugs. So the initial description of the behavior is bound to be coarse. Ave/Ariadne provides the user with an environment where a coarse behavioral description can be refined at successive iterations guided by the feedback from the debugger. This exploration of different facets of program behavior will either lead the user to the error, or convince him/her that the behavior is indeed the correct one. Ariadne provides the user with the functional queries to explore the characteristics of the match. As an example, the user can match a number of multicasts, and then use a functional query to find out the which processes actually sent the multicasts. The user can also calculate new attributes for the matched abstractions, and thus explore different dimensions of the behavior. Ave's strategy of projecting the new attributes in a color domain makes it easier for users to group similar abstract events together. As an example, the user may match a number of data exchanges between processors. He or she can then ask Ariadne to compute a new attribute for each exchange which gives the distance between the processors that exchanged data values. Different distances get projected to different colors. The display in Ave highlights events with the same distance attribute with the same color. The user can easily identify events that are similar from this color scheme.

Section 2 gives a brief overview of Ave/Ariadne environment. Section 3 provides several sample debugging sessions illustrating its capabilities.



next up previous
Next: Our Approach Up: PDCS'94 Conference Previous: PDCS'94 Conference



Joydip Kundu kundu@neweng.enet.dec.com