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 条
  • [41] Compiling Scilab to high performance embedded multicore systems
    Stripf, Timo
    Oey, Oliver
    Bruckschloegl, Thomas
    Becker, Juergen
    Rauwerda, Gerard
    Sunesen, Kim
    Goulas, George
    Alefragis, Panayiotis
    Voros, Nikolaos S.
    Derrien, Steven
    Sentieys, Olivier
    Kavvadias, Nikolaos
    Dimitroulakos, Grigoris
    Masselos, Kostas
    Kritharidis, Dimitrios
    Mitas, Nikolaos
    Perschke, Thomas
    MICROPROCESSORS AND MICROSYSTEMS, 2013, 37 (08) : 1033 - 1049
  • [42] Exploiting multimedia extensions with a data parallel language
    Bulic, P
    Gustin, V
    Durakovic, E
    Proceedings of the 14th Euromicro International Conference on Parallel, Distributed, and Network-Based Processing, 2005, : 431 - 438
  • [43] A DATA-PARALLEL SCIENTIFIC MODELING LANGUAGE
    FRANCIS, RS
    MATHIESON, ID
    WHITING, PG
    DIX, MR
    DAVIES, HL
    ROTSTAYN, LD
    JOURNAL OF PARALLEL AND DISTRIBUTED COMPUTING, 1994, 21 (01) : 46 - 60
  • [44] Language bindings for a data-parallel runtime
    Carpenter, B
    Fox, G
    Leskiw, D
    Li, X
    Wen, Y
    Zhang, G
    THIRD INTERNATIONAL WORKSHOP ON HIGH-LEVEL PARALLEL PROGRAMMING MODELS AND SUPPORTIVE ENVIRONMENTS, PROCEEDINGS, 1998, : 42 - 49
  • [45] Obsidian: A Domain Specific Embedded Language for Parallel Programming of Graphics Processors
    Svensson, Joel
    Sheeran, Mary
    Claessen, Koen
    IMPLEMENTATION AND APPLICATION OF FUNCTIONAL LANGUAGES, 2011, 5836 : 156 - 173
  • [46] A Compiling Method of Embedded PLC Instruction Based on ARM
    Cheng Guang-he
    Li Hui-qiang
    Wang Mao-li
    Hao Feng-qi
    Zhao Feng
    Yi Xiao-feng
    PROCEEDINGS OF 2009 INTERNATIONAL CONFERENCE ON INFORMATION, ELECTRONIC AND COMPUTER SCIENCE, VOLS I AND II, 2009, : 331 - 334
  • [47] Research on Java']Java Compiling System for Embedded Systems
    Luo, Haowen
    Zhang, Yu
    Zhang, Shenglan
    ISBDAI '18: PROCEEDINGS OF THE INTERNATIONAL SYMPOSIUM ON BIG DATA AND ARTIFICIAL INTELLIGENCE, 2018, : 333 - 336
  • [48] Data parallel language and compiler support for data intensive applications
    Ferreira, R
    Agrawal, G
    Saltz, J
    PARALLEL COMPUTING, 2002, 28 (05) : 725 - 748
  • [49] Compiling residuation for a multiparadigm symbolic programming language
    Grivas, G
    Palinginis, A
    DESIGN AND IMPLEMENTATION OF SYMBOLIC COMPUTATION SYSTEMS, 1996, 1128 : 331 - 342
  • [50] Methodology issues of compiling a language personality dictionary
    Ivantsova, Yekaterina, V
    VOPROSY LEKSIKOGRAFII-RUSSIAN JOURNAL OF LEXICOGRAPHY, 2012, 1 : 27 - +