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 条
  • [11] Compiling data-parallel programs to a distributed runtime environment with thread isomigration
    Antoniu, Gabriel
    Parallel Processing Letters, 2000, 10 (2-3): : 201 - 214
  • [12] Compiling a simulation language in APL
    Alfonseca, M
    Alfonseca, E
    de Lara, J
    PROCEEDINGS OF THE APL98 CONFERENCE, 1999, 29 (03): : 105 - 109
  • [13] A Parallel Language for Embedded Real Time Image Processing
    Duan Zongtao
    Zhang Yanni
    Duan Zongyuan
    2009 INTERNATIONAL FORUM ON INFORMATION TECHNOLOGY AND APPLICATIONS, VOL 1, PROCEEDINGS, 2009, : 708 - +
  • [14] COMPILING NESTED DATA-PARALLEL PROGRAMS FOR SHARED-MEMORY MULTIPROCESSORS
    CHATTERJEE, S
    ACM TRANSACTIONS ON PROGRAMMING LANGUAGES AND SYSTEMS, 1993, 15 (03): : 400 - 462
  • [15] An Embedded Declarative Data Transformation Language
    Tarau, Paul
    PPDP'09: PROCEEDINGS OF THE 11TH INTERNATIONAL ACM SIGPLAN SYMPOSIUM ON PRINCIPLES AND PRACTICE OF DECLARATIVE PROGRAMMING, 2009, : 171 - 182
  • [16] Compiling lisp programs for parallel execution
    Larus, James R.
    LISP and Symbolic Computation, 1991, 4 (01):
  • [17] Compiling Parallel Symbolic Execution with Continuations
    Wei, Guannan
    Jia, Songlin
    Gao, Ruiqi
    Deng, Haotian
    Tan, Shangyin
    Bracevac, Oliver
    Rompf, Tiark
    2023 IEEE/ACM 45TH INTERNATIONAL CONFERENCE ON SOFTWARE ENGINEERING, ICSE, 2023, : 1316 - 1328
  • [18] A compiling algorithm of parallel C program
    Xiong, ZY
    Zhang, YF
    DCABES 2001 PROCEEDINGS, 2001, : 37 - 39
  • [19] Compiling Files in Parallel: A Study with GCC
    Belinassi, Giuliano
    Biener, Richard
    Hubicka, Jan
    Cordeiro, Daniel
    Goldman, Alfredo
    2022 IEEE 34TH INTERNATIONAL SYMPOSIUM ON COMPUTER ARCHITECTURE AND HIGH PERFORMANCE COMPUTING WORKSHOPS (SBAC-PADW 2022), 2022, : 1 - 8
  • [20] Enabling primitives for compiling parallel languages
    Goldstein, SC
    Schauser, KE
    Culler, D
    LANGUAGES, COMPILERS AND RUN-TIME SYSTEMS FOR SCALABLE COMPUTERS, 1996, : 153 - 168