Towards High-Performance Code Generation for Multi-GPU Clusters Based on a Domain-Specific Language for Algorithmic Skeletons

被引:0
作者
Fabian Wrede
Herbert Kuchen
机构
[1] University of Muenster,Department of Information Systems, European Research Center for Information Systems (ERCIS)
来源
International Journal of Parallel Programming | 2020年 / 48卷
关键词
Algorithmic skeletons; Parallel programming; High-performance computing; Model-driven development; Domain-specific language;
D O I
暂无
中图分类号
学科分类号
摘要
In earlier work, we defined a domain-specific language (DSL) with the aim to provide an easy-to-use approach for programming multi-core and multi-GPU clusters. The DSL incorporates the idea of utilizing algorithmic skeletons, which are well-known patterns for parallel programming, such as map and reduce. Based on the chosen skeleton, a user-defined function can be applied to a data structure in parallel with the main advantage that the user does not have to worry about implementation details. So far, we had only implemented a generator for multi-core clusters and in this paper we present and evaluate two prototypes of generators for multi-GPU clusters, which are based on OpenACC and CUDA. We have evaluated the approach with four benchmark applications. The results show that the generation approach leads to execution times, which are on par with an alternative library implementation.
引用
收藏
页码:713 / 728
页数:15
相关论文
共 18 条
[1]  
Ernsting S(2012)Algorithmic skeletons for multi-core, multi-GPU systems and clusters Int. J. High Perform. Comput. Netw. 7 129-138
[2]  
Kuchen H(2005)When and how to develop domain-specific languages ACM Comput. Surv. 37 316-344
[3]  
Mernik M(2008)Scalable parallel programming with CUDA Queue 6 40-53
[4]  
Heering J(2019)Generation of high-performance code based on a domain-specific language for algorithmic skeletons J. Supercomput. 45 283-299
[5]  
Sloane AM(2017)Data parallel algorithmic skeletons with accelerator support Int. J. Parallel Program. 27 1740005-undefined
[6]  
Nickolls J(2017)SPar: a DSL for high-level and productive stream parallelism Parallel Process. Lett. undefined undefined-undefined
[7]  
Buck I(undefined)undefined undefined undefined undefined-undefined
[8]  
Garland M(undefined)undefined undefined undefined undefined-undefined
[9]  
Skadron K(undefined)undefined undefined undefined undefined-undefined
[10]  
Wrede F(undefined)undefined undefined undefined undefined-undefined