With rapidly increasing concurrency, the HPC community is looking for new parallel programming paradigms to make best use of current and up-coming machines. Under the Japanese CREST funding program, the post-petascale HPC project developed the XMP programming paradigm, a pragma-based partitioned global address space (PGAS) approach. Good tool support for debugging and performance analysis is crucial for the productivity and therefore acceptance of a new programming paradigm. In this work we investigate which properties of a parallel programing language specification may help tools to highlight correctness and performance issues or help to avoid common issues in parallel programming in the first place. In this paper we exercise these investigations on the example of XMP. We also investigate the question how to improve the reusability of existing correctness and performance analysis tools.
CCS CONCEPTS• Software and its engineering → Correctness; Parallel programming languages; Software maintenance tools; Permission to make digital or hard copies of part or all of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for third-party components of this work must be honored. For all other uses, contact the owner/author(s).
MOTIVATIONIn this paper we discuss three research questions: First, which properties of a language or parallelization paradigm are required to enable effective automatic correctness checking and possibly to avoid errors in the first place; second, how can existing specifications or APIs be extended to provide the necessary semantic information for the correctness checking tool; finally, to what extent can existing tools be reused and mapped to such a new programming paradigm.We exercise this evaluation based on XcalableMP (XMP). XMP is a partitioned global address space (PGAS) approach driven by the Japanese exascale initiative.As a PGAS aproach, XMP combines paradigms from shared and distributed memory programming; XMP also utilizes pragma based directives as well as API functions and base-language extensions. With these properties, XMP represents most features that a PGAS, distributed or shared memory programming paradigm would provide. This means similar analysis can be applied to many existing or up-coming parallel programming approaches.For correctness analysis, we distinguish three classes of analysis: