Copperhead: Compiling an Embedded Data Parallel Language

被引:0
|
作者
Catanzaro, Bryan [1 ]
Garland, Michael
Keutzer, Kurt [1 ]
机构
[1] Univ Calif Berkeley, Berkeley, CA 94720 USA
关键词
!text type='Python']Python[!/text; Data Parallelism; GPU; Algorithms; Design; Performance;
D O I
10.1145/2038037.1941562
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
Modern parallel microprocessors deliver high performance on applications that expose substantial fine-grained data parallelism. Although data parallelism is widely available in many computations, implementing data parallel algorithms in low-level languages is often an unnecessarily difficult task. The characteristics of parallel microprocessors and the limitations of current programming methodologies motivate our design of Copperhead, a high-level data parallel language embedded in Python. The Copperhead programmer describes parallel computations via composition of familiar data parallel primitives supporting both flat and nested data parallel computation on arrays of data. Copperhead programs are expressed in a subset of the widely used Python programming language and interoperate with standard Python modules, including libraries for numeric computation, data visualization, and analysis. In this paper, we discuss the language, compiler, and runtime features that enable Copperhead to efficiently execute data parallel code. We define the restricted subset of Python which Copperhead supports and introduce the program analysis techniques necessary for compiling Copperhead code into efficient low-level implementations. We also outline the runtime support by which Copperhead programs interoperate with standard Python modules. We demonstrate the effectiveness of our techniques with several examples targeting the CUDA platform for parallel programming on GPUs. Copperhead code is concise, on average requiring 3.6 times fewer lines of code than CUDA, and the compiler generates efficient code, yielding 45-100% of the performance of hand-crafted, well optimized CUDA code.
引用
收藏
页码:47 / 56
页数:10
相关论文
共 50 条
  • [21] Data access reorganizations in compiling out-of-core data parallel programs on distributed memory machines
    Kandemir, M
    Bordawekar, R
    Choudhary, A
    11TH INTERNATIONAL PARALLEL PROCESSING SYMPOSIUM, PROCEEDINGS, 1997, : 559 - 564
  • [22] Exploring the Semantic Gap in Compiling Embedded DSLs
    Zangerl, Peter
    Jordan, Herbert
    Thoman, Peter
    Gschwandtner, Philipp
    Fahringer, Thomas
    2018 INTERNATIONAL CONFERENCE ON EMBEDDED COMPUTER SYSTEMS: ARCHITECTURES, MODELING, AND SIMULATION (SAMOS XVIII), 2018, : 195 - 201
  • [23] Design and implementation of a communication-efficient data-parallel program compiling system
    Shih, KP
    Lai, CY
    Sheu, JP
    Tseng, YC
    JOURNAL OF INFORMATION SCIENCE AND ENGINEERING, 2001, 17 (05) : 825 - 839
  • [24] HiDP: A Hierarchical Data Parallel Language
    Zhang, Yongpeng
    Mueller, Frank
    PROCEEDINGS OF THE 2013 IEEE/ACM INTERNATIONAL SYMPOSIUM ON CODE GENERATION AND OPTIMIZATION (CGO), 2013, : 171 - 181
  • [25] A GEOMETRICAL DATA-PARALLEL LANGUAGE
    DEKEYSER, JL
    LAZURE, D
    MARQUET, P
    SIGPLAN NOTICES, 1994, 29 (04): : 31 - 40
  • [26] Language issues of compiling Ada to hardware
    Ward, M
    Audsley, NC
    RELIABLE SOFTWARE TECHNOLOGIES - ADA-EUROPE 2002, 2002, 2361 : 88 - 99
  • [27] THE TRADITION OF DICTIONARY COMPILING IN THE URDU LANGUAGE
    Durgun, Recep
    SELCUK UNIVERSITESI EDEBIYAT FAKULTESI DERGISI-SELCUK UNIVERSITY JOURNAL OF FACULTY OF LETTERS, 2016, 36 : 367 - 382
  • [28] Compiling a Reflective Language using MetaOCaml
    Asai, Kenichi
    ACM SIGPLAN NOTICES, 2015, 50 (03) : 113 - 122
  • [29] Compiling CIL rewriting language for multiprocessors
    Tian, Xinmin
    Wang, Dingxing
    Zheng, Weimin
    Shen, Meiming
    Li, Cheng
    Journal of Computer Science and Technology, 1994, 9 (04) : 302 - 310
  • [30] A Domain-Specific Embedded Language for Programming Parallel Architectures
    McGuiness, Jason
    Egan, Colin
    2013 12TH INTERNATIONAL SYMPOSIUM ON DISTRIBUTED COMPUTING AND APPLICATIONS TO BUSINESS, ENGINEERING & SCIENCE (DCABES), 2013, : 83 - 88