Performant, Portable, and Productive Parallel Programming With Standard Languages

Michael J. Wolfe · Computing in Science & Engineering · 2021

The perfect solution to the ${\mathrm P}^3$P3 (performance, portability, productivity) problem is a single version of an application that gives high performance across a wide range of target systems and is easy to develop and maintain. Actual solutions give up some level of performance, portability, or productivity, or all three. Here we review three periods in the past 65 years when the ${\mathrm P}^3$P3 problem had good solutions. But it is harder today, with greater parallelism. We propose and argue in favor of a machine model to help programmers design algorithms and data structures that will exhibit performance portability. We then discuss the main point, in what language to express a parallel program to get all three of high performance, wide portability, with good productivity. We propose that the community, including both applications developers and language implementers, should focus on the parallel features in existing and future standard languages.

Read the paper · More papers on PaperTik