A hierarchical software development environment for performance oriented parallel programming [article]

David A. Feldcamp
The future of high performance computing lies in massively parallel computers. In order to create software to utilize this ever more powerful and complex hardware, software designers must reconcile the desire to provide simplifying abstractions with performance requirements. This thesis examines one approach to addressing this problem. It has been observed that most parallel programs are written so that they possess the structure of one of a relatively small number of paradigms which describe
more » ... e essence of a virtual machine. It is well known that better performance will be achieved when there is a close match between the structure of a virtual machine and the algorithms of a program built using the machine. We have proposed the skeleton-template-module (STM) as a parameterized, partially implemented virtual machine, corresponding to a particular paradigm. An STM is implemented by an expert system programmer and serves to hide the internal complexity of the virtual machine from application programmers who are only presented with an interface to the missing components and parameters. To be truly useful a construct such as an STM must be supported by and fully integrated into a viable programming environment. Such a system must support both the construction of STMs and their use to create applications as part of a general programming framework. However, the lessons of existing sequential and parallel programming systems must not be forgotten. "Ease of use" must remain a high priority. Reuse must be facilitated and encouraged wherever possible. Scalability in its several forms must exist. Finally, the system must also recognize that programming is but one task in the development of parallel programs and so must support the existence and cooperative functioning of a variety of tools. Of these tools, the most important from the developer's point of view is the user interface which provides both support for constructing programs and interacting with the rest of the environment. We have designed and built such an interf [...]
doi:10.14288/1.0051189 fatcat:53yqoi3cmreutc7fc5fvobxxda