2.0 Ongoing Research & Development
2.1 Integration Mechanisms
2.1.1 Development of a multiple database framework for program information
We have been developing a database of trace information. This
involves programs to generate information about large running systems dynamically
and at low cost as well as programs to analyze the data generated from
such traces and put it into a framework where it can be used for visualization
or debugging. The basic mechanisms for generating trace data as well
as some of the fundamental analyses have been worked out and prototypes
We are also writing a journal paper describing the Desert integration mechanisms.
2.2 Presentation Technology
2.2.1 3D visualization framework
We now have a working framework for 3D program visualization over a variety of data sources including the Desert cross-reference data and the trace databases described above. We currently support ten different visualization strategies with an open, OpenGL-based toolkit. The front end for visualization, Cacti, supports a universal-relation-based visual query language. We have successfully used a prototype here to develop a wide range of visualizations.
2.2.2 FrameMaker APIs for software development
We continue to improve the performance and behavior of the Frame-based front end to Desert programming, both through the use of additional feedback and through faster algorithms. We are currently exploring taking our current framework and making it independent from Framemaker so it can be used in other environments and with other editors. We are also looking how we can improve the presentation of information to the user from the editor.
2.3 Distributed Technology
2.3.1 Transactional Memory
We have been developing a prototype of the Aleph Toolkit, a simple,
platform-independent API for an object-based distributed shared memory.
This API is structured in a way that maximizes the flexibility to encorporate
into the run-time system custom libraries for synchronization, cache
management, and communication.
The prototype is being implemented as a set of Java classes with optional machine-dependent plug-ins for increased performance. The prototype is currently undergoing intensive testing using students in an appropriate course and will be released via the Internet once it is more completely debugged.
2.3.2 Instrumentation principles
We have been working on a very general system for detailed, low-impact
instrumentation of sequential programs. We developed new techniques
that allow a programmer to perform very fine-grain monitoring of their
programs so as to locate difficult-to-find bugs as they occur during execution.
Performance impact is kept extremely low compared to past approaches.
For example, when performing simplistic types of memory-access checking,
the system performs up to 3-10 times faster than commercially available
tools (Pure Atria's Purify and Numega's Bounds Checker). In addition,
the system can perform much more sophisticated types of bug detection than
current commercial tools. When fully developed, this system should
be able to locate some bugs that are extremely difficult to find currently,
reducing software development costs.
3.0 Notable Accomplishments & Technology Transition
4.0 Progress on Inter/Intra Cluster Collaborations
5.0 Publications (Partial list)
Robert Netzer, "Finding Consistent Global Checkpoints in a Distributed Computation," IEEE Transactions on Parallel and Distributed Systems, June 1997.
Robert Netzer, "Replaying Distributed Programs Without Message Logging," Symposium on High Performance Distributed Computing (HPDC) August 1997, Seattla WA.
Robert Netzer, "Communication-Based Prevention of Useless Checkpoints in Distributed Computations," Symposium on Reliable Distributed Systems, 1997.
Steven P. Reiss, "Cacti: A front end for program visualization", Proc. Information Visualization '97, pp 46-50, October 1997.
8.0 Plans For The Next Reporting Period
Continue to work on our ongoing research.