Ave/Ariadne is a post mortem debugger for massively parallel systems. Although originally designed for MIMD message-passing system, the current incarnation can also handle shared memory program traces. It is designed for correctness debugging, and it supports the user in investigating global interprocess communication patterns.
Ariadne operates on traces produced by parallel
programs.
Within these traces, processes, identified by
integer process ids (PIDs), execute sequences of primitive events.
The debugger supports four primitive event types: Read,
Write, Multicast, and Phase Marker. This repertoire can easily be extended
by the user at the run-time. Reads, Writes, and Multicasts
denote interprocess communication, and Phase Markers denote the ends
of logical phases of computation. The traces are stored internally in
an execution history graph where the nodes represent events and
the edges represent communication events; from these traces we can derive
Lamport's happened before relation [17]. A number of
debuggers provide visualizations of execution history graphs
[9,11,12,21] but such visualizations do not scale well
for massively parallel systems. Ave/Ariadne supports
interactive, textual and graphical explorations of the graph.
Here we briefly describe three aspects of this support: the modeling language, the facilities for manipulating logical temporal orderings, and the visual interface that is available for investigating the characteristics of pattern matches and mismatches.