In this project we have designed a debugger to interact with optimized programs written in a high-level data-parallel array language. A prototype version of the debugger has been implemented, and our strategy of breakpoint construction has been shown to be effective. The methods developed here could be easily extended to work with other data-parallel languages such as pC++.
An interesting extension to this project involves the following problem: Most high-level parallel languages are compiled into a standard sequential language with communication library calls. For this reason, some lower level optimizations are not performed by the parallel language compiler, but are left to the target machine's native sequential compiler. These optimizations include constant propogation, induction variable elimination, and dead code elimination. The current ZEE prototype depends on the use of a sequential debugger to control the individual processes. However, such debuggers are typically incapable of interacting with optimized programs. It would be interesting to discover how much of the functionality required by ZEE could be provided by a sequential debugger designed for optimized code.