Telescoping Languages: A System for Automatic Generation of Domain Languages

Telescoping Languages: A System for Automatic Generation of Domain Languages
复制标题

伸缩语言:自动生成领域语言的系统

DOI:
10.1109/jproc.2004.840447
复制
发表时间:
2005
影响因子:
20.6
通讯作者:
J. Mellor
J. Mellor
中科院分区:
计算机科学1区
文献类型:
--
作者:
K. Kennedy;B. Broom;A. Chauhan;R. Fowler;John Garvin;C. Koelbel;Cheryl McCosh;J. Mellor

文献摘要

被引文献

相似文献

软件缺口--对新软件的需求与生产新软件的劳动力总能力之间的差距--是科学软件的一个严重问题。虽然用户欣赏使用相对高级的脚本语言的便利性(以及因此提高的生产率),但这些语言的缓慢执行速度仍然是一个问题。低级语言,如C和Fortran,为生产应用程序提供了更好的性能,但代价是由专家进行繁琐的编程和优化。如果用脚本语言编写的应用程序可以例行编译成高度优化的机器代码,那么巨大的生产力优势将成为可能。然而,仅仅为脚本语言开发优秀的编译器技术是不够的(许多项目已经成功地为MATLAB开发了编译器)。在实践中,科学家通常会用自己的以领域为中心的组件来扩展这些语言,例如MATLAB信号处理工具箱。这样做有效地定义了一种新的领域特定语言。如果我们要解决这样的扩展语言的效率问题,我们必须开发一个自动生成优化编译器的框架。为了实现这一目标,我们一直在追求一种创新的策略,我们称之为伸缩语言。我们的方法要求使用一个库预处理阶段,以广泛分析和优化定义扩展语言的库集合。这个分析的结果被收集到带注释的库中,并用于生成一个库感知的优化器。生成的库感知优化器使用预处理期间收集的知识来执行高级脚本的快速有效优化。这使得脚本优化能够从预处理期间执行的密集分析中受益,而无需付出代价。由于库预处理只在不频繁的“语言生成”时间执行,因此它的成本分摊在许多
The software gap - the discrepancy between the need for new software and the aggregate capacity of the workforce to produce it - is a serious problem for scientific software. Although users appreciate the convenience (and, thus, improved productivity) of using relatively high-level scripting languages, the slow execution speeds of these languages remain a problem. Lower level languages, such as C and Fortran, provide better performance for production applications, but at the cost of tedious programming and optimization by experts. If applications written in scripting languages could be routinely compiled into highly optimized machine code, a huge productivity advantage would be possible. It is not enough, however, to simply develop excellent compiler technologies for scripting languages (as a number of projects have succeeded in doing for MATLAB). In practice, scientists typically extend these languages with their own domain-centric components, such as the MATLAB signal processing toolbox. Doing so effectively defines a new domain-specific language. If we are to address efficiency problems for such extended languages, we must develop a framework for automatically generating optimizing compilers for them. To accomplish this goal, we have been pursuing an innovative strategy that we call telescoping languages. Our approach calls for using a library-preprocessing phase to extensively analyze and optimize collections of libraries that define an extended language. Results of this analysis are collected into annotated libraries and used to generate a library-aware optimizer. The generated library-aware optimizer uses the knowledge gathered during preprocessing to carry out fast and effective optimization of high-level scripts. This enables script optimization to benefit from the intense analysis performed during preprocessing without repaying its price. Since library preprocessing is performed only at infrequent "language-generation" times, its cost is amortized over many