WG211/M16VanWyk

From WG 2.11
Jump to: navigation, search

Language extensions for parallel programming: opportunities and challenges, Eric Van Wyk


For decades there has been significant research in new programming languages and language features to simplify the complex task of writing performant parallel programs. With treads and locks seen as too low-level and error-prone most of the efforts have focused on higher-level abstractions for specifying and exploiting parallelism. There is a great deal of diversity in these linguistic abstractions, and this diversity reflects the understanding that there is no single ‘‘right’’ set of abstractions for all parallel programming tasks. What is ‘‘right’’ depends on many factors: the application or problem at hand, sophistication and personal preferences of the programmer, and the degree of performance desired and effort required to achieve it.

A central hypothesis of our work is that an extensible language framework in which programmers can pick and choose the parallel programming abstractions that best fit their task at hand has many benefits over traditional approaches. This allows programmers to more easily experiment with and adopt language abstractions for parallel programming. For researchers and language developers it allows them to focus on the parallel programming abstractions without needing to construct an entire general purpose language as a host for their new features. Thus these benefits are reaped by both the programmers and the language abstraction developers. This mutually beneficial system can lead to a ecosystem of abstractions (along with their efficient implementations) that spurs both the adoption and development of the new parallel programming language features that are needed address the programming requirements driven by modern architectures.

Of course there are many challenges to overcome to achieve this goal, and we discuss some of these in this talk.