A Programming Language Interface To Describe Transformations And Code Generation

Lecture Notes in Computer Science(2011)

引用 45|浏览67
暂无评分
摘要
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.
更多
查看译文
关键词
transformation program,CUDA code,automatically-generated code,clean high-level code,code generation framework,code generation language,complex code generation sequence,high-performance GPU code,readable code,complex transformation sequence,programming language interface
AI 理解论文
溯源树
样例
生成溯源树,研究论文发展脉络
Chat Paper
正在生成论文摘要