Parallelism is one of the key components of large scale, high performance computing.
Extensive use of parallelism has yielded a tremendous increase in the raw processing speed of
high performance systems, but parallel problem solving remains difficult. These difficulties
are typically solved by building software tools, such as parallel programming environments.
Existing parallel programming environments are general purpose and use a broad paradigm.
This thesis illustrates that problem specific environments are more beneficial than general
purpose environments. A problem specific environment permits the design of the algorithm,
while also facilitating definition of the problem. We developed problem specific environments
for a simple and a complex class of problems. The simple class consists of two classic
graph problems, namely, all pairs shortest path and connected components. The complex
class consists of elliptic partial differential equations solved via domain decomposition. Specific
problems were solved with the problem specific environments and the general purpose
environment, BUILD, which allows the algorithm to be described with a control flow graph.
Comparisons between special purpose environments and general purpose environments show
that the special purpose environments allow the user to concentrate on the problem, while
general purpose environments force the user to think about mapping the problem to the
environment rather than solving the problem in parallel. Therefore, we conclude more effort
should be spent on building tools and environments for parallel computing that focus
specifically on a particular class of problems.