Dr.Hans Zima
Principal Scientist, Jet Propulsion Laboratory, California Institute of Technology,
Professor Emeritus, University of Vienna, Austria
High performance computing has become the third pillar of science and technology, providing the superior computational capability required for dramatic advances in fields such as DNA analysis, drug design and astrophysics. However, in today's dominating programming paradigm users wanting to fully exploit the capabilities of parallel machines are forced to adopt a low-level programming style that leads to high-cost software production and error-prone programs that are difficult to write, reuse, and maintain. Emerging petascale architectures built with many-core components providing millions of threads, and applications of growing size and complexity will further aggravate this problem.
This presentation will discuss the state-of-the-art in programming paradigms for high performance computing and identify the challenges posed by emerging petascale architectures of unmatched complexity, which are characterized by massive parallelism across multiple levels of computation hierarchies, deep memory structures, and sophisticated interconnection networks. We will outline the requirements for high-productivity programming languages that provide a viable compromise between the dual goals of human productivity and target code efficiency, followed by an overview of the major ideas underlying the programming languages developed in the DARPA-funded High-Productivity-Computing-Systems (HPCS) program. A focus will be placed on the discussion of the language "Chapel" designed in the HPCS project Cascade, which addresses some of the key challenges identified above. Chapel is a global-view programming language providing high-level features for explicit parallelism and locality awareness based on general concepts of index sets, domains, and data collections. The language is unique in including a capability for user-defined data distributions, which offers an abstraction that can be compared to the role of functions as control abstractions.
The final part of the lecture will outline alternative language approaches, identify open research issues, discuss the need for intelligent compiler technology, and point out the crucial role of effective programming environment support for the adoption of a new language.