ABSTRACT

The advent of parallel machine architectures has added a new level of complexity to the debugging process. Parallelism implies nondeterminism; nondeterminism, in turn, implies nonrepeatability. Experience with actual multiprocessors strongly supports the importance of loops in parallel programming. In the subroutine model, the loop body is replaced by a parallel subroutine invocation that takes as parameters an indication of the loop iteration to execute and variables that have to be globally available to all processors. PTOOL divides quite naturally into two subcomponents: one to construct the dependence graph, and the other to answer queries about potential parallelism in the program. PTOOL assumes that subroutine parameters and variables in COMMON are shared, but all other variables used in the loop body are assigned to storage local to each processor. PTOOL will accept this modification and tailor its advice to the set of shared variables specified by the user.