Visual assistance for concurrent processing
Georges Grinstein, Robert F. Erbacher · 1998
Recent advances in concurrent architecture technology have led to a dramatic increase in the number of types of systems available as well as the number of systems in actual use. In contrast, software technology has not kept pace. Software tools have yet to be developed which fully compensate for the added difficulties and complexities inherent in programming concurrent architectures. Consequently, the tools used to aid in the development and debugging of applications for these types of architectures are often insufficient for the task. This makes it extremely difficult and time consuming to develop correct and efficient concurrent applications. The availability of high end graphics systems with most concurrent hardware provides an opportunity to extend development and debugging tools to use these graphics capabilities, where applicable. In this research, we explored interactive computational steering, data analysis (as opposed to processor or control analysis), analysis of data operations, often using direct manipulation techniques, all in support of the development of concurrent applications. We extended interactive computational steering beyond the ability to merely steer data values instantaneously. This resulted in techniques for the steering of operations, allowing the user to modify the application dynamically during execution. We also extended data steering to incorporate a persistent mode. In the persistent mode, once the user has specified the values for designated variable elements, the environment does not allow them to change. Operation visualization techniques that are merged with the data display provide the user with a single focus and aid in the correlation of data, program status, and loop status information. The environment presents the operation visualizations in such a way that the user can also use them to debug the execution stack. Finally, we show how users can apply the techniques developed during the course of this research to aid in the comprehension and debugging of concurrent programs. Examples show how the techniques can be used to find potential errors in two example concurrent applications or to verify that errors do not exist.