Interactive parallelization of numerical scientific programs
Doctor of Philosophy
Parallel computers can provide impressive speedups, but unfortunately such speedups are difficult to realize in actual practice unless the program is written in a way that effectively exploits the parallel hardware. This may require a considerable intellectual effort on the part of the programmer, especially when the programs are large and very complex. Programs of this sort are typically encountered in scientific applications, where the compute-intensive nature of the application makes high execution speeds very critical. This thesis develops a framework that can be used as a basis for the design of an interactive parallel programming tool, that can aid in the development of parallel programs. A general theory of data dependence testing is presented that allows detection of different granularities of parallelism to be treated in a uniform manner. The parallelism detection process can either be guided by the programmer or performed automatically. Some new parallelism enhancement techniques such as task pipelining are also presented. To deal with programmer specified parallelism, a static analysis technique is developed for identifying potential race conditions in a parallel program. This technique is also used to identify some forms of deadlock. A parallel programming tool designed using these techniques will help considerably reduce the time and effort that is usually devoted to the development of correct and efficient parallel programs.