The Berkeley UPC Team will collaborate with Etnus to build a debugger for the Berkeley UPC Compiler. UPC is a parallel language that uses an explicitly parallel global address space programming model. Commercial implementations of UPC exist for some machines based on compilers that generate native code for a particular architecture. To enable ubiquitous access to the UPC language, the Berkeley UPC Team has developed a prototype UPC compiler that is designed for maximum portability. It translates the UPC language into C with calls to a machine-specific runtime layer to implement communication and other parallelism constructs.
The TotalView debugger from Etnus can be used with several parallel languages, including UPC, but currently only for commercial compilers that generate native code directly. To support debugging of programs compiled with the Berkeley compiler, the groups will modify both the Berkeley UPC compiler and the TotalView debugger. The Berkeley UPC group will augment their compiler to provide the information required by the debugger, such as line numbers, variable names and function names, so that the debugger can report information visible at the UPC level. We will do this by generating Tcl code to modify the debugger's symbol table and an implementation of an "assistant" library to support debugger access to information in the UPC runtime system. The two groups will collaborate on the detailed design and documentation. The modified UPC translator will be publicly released and, combined with a modified TotalView debugger from Etnus, it will enable source level debugging of UPC programs using the Berkeley compiler.
