[Georgia Tech][GVU][Research][Search]

Pthread Visualization Package - Gthread

This project involves a set of animation views that we have developed for illustrating the execution of Pthread programs on KSR parallel machines. The animations depict the individual threads and their movement through the functions of the program, and it shows other program features such as barriers and mutexes. Included below are some sample views from the library.

This software is available via anonymous FTP from ftp.cc.gatech.edu under pub/people/stasko. The support platforms required for this are a KSR machine for gathering program data, and a UNIX workstation running the X Window System with Motif and a C++ compiler with templates, for the animation library. From the FTP site mentioned above, you will need to retrieve the files gthread.KSRtracing.tar.Z and gthread.Animations.tar.Z.

The visualization program is implemented using the POLKA Animation Designer's Package.

The thread view lists the threads executing in the program. A thread is running when the corresponding icon is fully colored. It is idle if the icon is half colored. When the thread terminates, the icon turns black. And when the thread is detached and becomes unavailable, the icon goes away.

The history view shows the execution history of each thread. An arrow pointing to the head (left end of the icon) of a thread indicates the creation of this thread. An arrow pointing out from the tail (right end of the icon) of a thread indicates that it is joined by another thread. The lifetime of a thread is divided into segments each corresponds to a period of time it executes in a function. A small arrow in a segment pointing to the right stands for a function invocation. A small arrow pointing to the left stands for a function return.

The function view dynamically constructs the program call graph when threads are forked, functions are called, and the point of execution of a thread moves from function to function.

When a thread is trying to lock a mutex, it is drawn beside the mutex in the mutex view. When it gets the lock, it moves into the center of the mutex. The thread leaves the view when it unlocks the mutex.

The barrier view shows a history of barrier check-in and check-out transactions. If a thread is drawn in full size, it is participating in the corresponding synchronization phase. Otherwise it marks the activity done in the past. A new barrier box is generated when there is a new phase of check-in / check-out, and the scene scrolls up.

Questions or comments? Email gvu-webmaster@cc.gatech.edu.