Software Issues in High-Performance Computing and a Framework for the Development of HPC Applications
Duke University Durham United States
Pagination or Media Count:
We identify the following key problems faced by HPC software1 the large gap between HPC design and implementation models in application development, 2 achieving high performance for a single application on different HPC platforms, and 3 accommodating constant changes in both problem specification and target architecture as computational methods and architectures evolve. To attack these problems, we suggest an application development methodology in which high-level architecture-independent specifications are elaborated, through an iterative refinement process which introduces architectural detail, into a form which can be translated to efficient low-level architecture-specific programming notations. A tree-structured development process permits multiple architectures to be targeted with implementation strategies appropriate to each architecture, and also provides a systematic means to accommodate changes in specification and target architecture. We describe the Proteus system, an application development system based on a wide-spectrum programming notation coupled with a notion of program refinement. This system supports the above development methodology via 1the construction of the specification and the successive designs in a uniform notation, which can be interpreted to provide early feedback on functionality and performance, 2 migration of the design towards specific architectures using formal methods of program refinement, 3 techniques for performance assessment in which the computational model varies with the level of refinement, and 4 the automatic translation of suitably refined programs to low-level parallel virtual machine codes for efficient execution.