Programming Languages for High Performance Computing

Rapid advances in hardware technology have made possible computers which depart dramatically from the traditional von Neumann model of computation in that they exhibit very significant degrees of parallelism and very high levels of cost-effective “raw” performance. Such machines are now commercially available. One of the barriers to the widespread usage of these machines is the lack of user-friendly and efficient programming tools, compilers, and debuggers for developing applications on these high performance systems. There are many new and difficult problems associated with programming high-performance computers, which do not concern those who develop software for conventional computers. Examples of such problems are: • how to extract parallelism from a program description? • given a target parallel machine, how should one represent and decompose a problem so as to obtain maximal performance? In this paper, we will focus on the problem of making programs for high performance computers. This means that we view high performance computers through the eyes of programmers of these systems.