WG211/M16VanWyk
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.