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 条
  • [31] Unit Test Code Generator for Lua Programming Language
    Wibowo, Junno Tantra Pratama
    Hendradjaya, Bayu
    Widyani, Yani
    2015 INTERNATIONAL CONFERENCE ON DATA AND SOFTWARE ENGINEERING (ICODSE), 2015, : 241 - 245
  • [32] Unit test code generator for lua programming language
    School of Electrical Engineering and Informatics, Institut Teknologi Bandung, Bandung, Indonesia
    Proc. Int. Conf. Data Softw. Eng., ICODSE, (241-245):
  • [33] When Polyhedral Transformations Meet SIMD Code Generation
    Kong, Martin
    Veras, Richard
    Stock, Kevin
    Franchetti, Franz
    Pouchet, Louis-Noel
    Sadayappan, P.
    ACM SIGPLAN NOTICES, 2013, 48 (06) : 127 - 138
  • [34] Computational Code HETE (Standard C Programming Language)
    Cabezas-Gómez, Luben
    Navarro, Hélio Aparecido
    Saíz-Jabardo, José Maria
    SpringerBriefs in Applied Sciences and Technology, 2015, 106 : 63 - 67
  • [35] Reversers - A programming language construct for reversing out of code
    Finkel, Raphael
    Advances in Systems, Computing Sciences and Software Engineering, 2006, : 137 - 140
  • [36] Code Graph Transformations for Verifiable Generation of SIMD-Parallel Assembly Code
    Anand, Christopher Kumar
    Kahl, Wolfram
    APPLICATIONS OF GRAPH TRANSFORMATIONS WITH INDUSTRIAL RELEVANCE, 2008, 5088 : 217 - 232
  • [37] Code characterization for automatic user interface generation
    Kadlec, Jaroslav
    INNOVATIONS AND ADVANCED TECHNIQUES IN COMPUTER AND INFORMATION SCIENCES AND ENGINEERING, 2007, : 255 - 259
  • [38] Generation of user interface from characterized code
    Kadlec, Jaroslav
    Zemcik, Pavel
    WSCG 2010: POSTER PROCEEDINGS, 2010, : 9 - 12
  • [39] A CODE GENERATION INTERFACE FOR ANSI-C
    FRASER, CW
    HANSON, DR
    SOFTWARE-PRACTICE & EXPERIENCE, 1991, 21 (09): : 963 - 988
  • [40] Enhancing Genetic Testing Report Generation Using Large Language Models and Application Programming Interface Integration
    Schmidt, R.
    Uchytil, J.
    Markowitz, A.
    Gai, X.
    JOURNAL OF MOLECULAR DIAGNOSTICS, 2024, 26 (11): : S81 - S81