Challenges in designing an HPF debugger
David LaFrance-Linden · Digital technical journal · 1997
Vol. 9 No. 3 1997 As we learn better ways to express our thoughts in the form of computer programs and to take better advantage of hardware resources, we incorporate these ideas and paradigms into the programming languages we use. Fortran 90 provides mechanisms to operate directly on arrays, e.g., A=2*A to double each element of A independent of rank, rather than requiring the programmer to operate on individual elements within nested DO loops. Many of these mechanisms are naturally data parallel. High Performance Fortran (HPF) extends Fortran 90 with data distribution directives to facilitate computations done in parallel. Debuggers, in turn, need to be enhanced to keep pace with new features of the languages. The fundamental user requirement, however, remains the same: Present the control flow of the program and its data in terms of the original source, independent of what the compiler has done or what is happening in the run-time support. Since HPF compilers automatically distribute data and computation, thereby widening the gap between actual execution and original source, meeting this requirement is both more important and more difficult. This paper describes several of the challenges HPF creates for a debugger and how an experimental debugging technology, internally code-named Aardvark, successfully addresses many of them using techniques that have applicability beyond HPF. For example, programming paradigms common to explicit message-passing systems such as the Message Passing Interface (MPI) can benefit from Aardvark’s methods. The HPF compiler and run time used is DIGITAL’s HPF compiler, which produces an executable that uses the run-time support of DIGITAL’s Parallel Software Environment. DIGITAL’s HPF compiler transforms a program to run as several intercommunicating processes. The fundamental requirement, then, is to give the appearance of a single control flow and a single data space, even though there are several individual control flows and the data has been distributed. In the paper, I introduce the concept of logical entities and show how they address many of the control flow challenges. A discussion of a rich and flexible data model that easily handles distributed data follows. I then point out difficulties imposed on user interfaces, especially when the program is not in a completely Challenges in Designing an HPF Debugger David C. P. LaFrance-Linden