A Programming Language Interface to Describe Transformations and Code Generation

被引:22
|
作者
Rudy, Gabe [1 ]
Khan, Malik Murtaza [2 ]
Hall, Mary [1 ]
Chen, Chun [1 ]
Chame, Jacqueline [2 ]
机构
[1] Univ Utah, Sch Comp, Salt Lake City, UT 84112 USA
[2] USC Informat Sci Inst, Marina Del Rey, CA 90295 USA
基金
美国国家科学基金会;
关键词
LOOP; PARALLELISM;
D O I
10.1007/978-3-642-19595-2_10
中图分类号
TP3 [计算技术、计算机技术];
学科分类号
0812 ;
摘要
This paper presents a programming language interface, a complete scripting language, to describe composable compiler transformations. These transformation programs can be written, shared and reused by non-expert application and library developers. From a compiler writer's perspective, a scripting language interface permits rapid prototyping of compiler algorithms that can mix levels and compose different sequences of transformations, producing readable code as output. From a library or application developer's perspective, the use of transformation programs permits expression of clean high-level code, and a separate description of how to map that code to architectural features, easing maintenance and porting to new architectures. We illustrate this interface in the context of CUDA-CHiLL, a source-to-source compiler transformation and code generation framework that transforms sequential loop nests to high-performance CPU code. We show how this high-level transformation and code generation language can be used to express: (1) complex transformation sequences, exemplified by a single loop restructuring construct used to generate a series of tiling and permute commands; and, (2) complex code generation sequences to produce CUDA code from a high-level specification. We demonstrate that the automatically-generated code either performs closely or outperforms two hand-tuned CPU library kernels from Nvidia's CUBLAS 2.2 and 3.2 libraries.
引用
收藏
页码:136 / +
页数:4
相关论文
共 50 条
  • [21] Parallel Pattern Language Code Generation
    Schmitz, Adrian
    Miller, Julian
    Burak, Semih
    Muelner, Matthias S.
    PROCEEDINGS OF THE 15TH INTERNATIONAL WORKSHOP ON PROGRAMMING MODELS AND APPLICATIONS FOR MULTICORES AND MANYCORES, PMAM 2024, 2024, : 32 - 41
  • [22] Autogenerator: Generation and execution of programming code on demand
    Magdalenic, Ivan
    Radosevic, Danijel
    Orehovacki, Tihomir
    EXPERT SYSTEMS WITH APPLICATIONS, 2013, 40 (08) : 2845 - 2857
  • [23] Automated Generation of Programming Language Quizzes
    Jain, Shuktika
    2015 10TH JOINT MEETING OF THE EUROPEAN SOFTWARE ENGINEERING CONFERENCE AND THE ACM SIGSOFT SYMPOSIUM ON THE FOUNDATIONS OF SOFTWARE ENGINEERING (ESEC/FSE 2015) PROCEEDINGS, 2015, : 1051 - 1053
  • [24] LABVIEW, A NEW GENERATION OF PROGRAMMING LANGUAGE
    SHOEMAKER, CF
    ABSTRACTS OF PAPERS OF THE AMERICAN CHEMICAL SOCIETY, 1989, 198 : 64 - AGFD
  • [25] Evaluating a Natural Language Interface for Behavioral Programming
    Gordon, Michal
    Harel, David
    2012 IEEE SYMPOSIUM ON VISUAL LANGUAGES AND HUMAN-CENTRIC COMPUTING (VL/HCC), 2012, : 167 - 170
  • [26] Evaluating a natural language interface for behavioral programming
    Weizmann Institute of Science, Israel
    Proc. of IEEE Symp. Vis. Lang. Hum.-Cent. Comput., VL/HCC, (167-170):
  • [27] A C++ LANGUAGE INTERFACE FOR PARALLEL PROGRAMMING
    UNGERER, T
    MICROPROCESSORS AND MICROSYSTEMS, 1993, 17 (04) : 195 - 200
  • [28] NaturalJava: A natural language interface for programming in Java
    Univ of Utah, Salt Lake City, United States
    Int Conf Intell User Interfaces Proc IUI, 1600, (207-211):
  • [29] A Verilog programming-language-interface primer
    Mittra, S
    EDN, 1999, 44 (18) : 75 - +
  • [30] Automated source code transformations on Fourth Generation Languages
    Martin, J
    CSMR 2004: EIGHTH EUROPEAN CONFERENCE ON SOFTWARE MAINTENANCE AND REENGINEERING, PROCEEDINGS, 2004, : 214 - 220