Abstract expressionism for parallel performance

Abstract expressionism for parallel performance
复制标题

并行表演的抽象表现主义

DOI:
10.1145/2774959.2774962
复制
发表时间:
2015
期刊:
--
影响因子:
--
通讯作者:
Bernecky R
Bernecky R
中科院分区:
--
文献类型:
--
作者:
Bernecky R

文献摘要

参考文献

被引文献

相似文献

使用抽象的数学表达式编程提供了一些好处,包括更简洁的程序,更容易的算法通信,证明算法定理的能力,增加的并行性和提高的编程效率。通常认为,更高的抽象级别意味着用户和计算机之间的语义差距更大,因此通常执行速度更慢,无论是顺序还是并行。近年来,领域特定语言已经被证明可以通过受益于领域特定知识的复杂优化来缩小这一差距。在本文中,我们证明了语义差距也可以关闭非特定领域的函数数组语言,而不需要嵌入到编译器工具链的语言特定的语义知识。我们提出了一个简单的例子,APL风格的程序,编译成C代码,优于同等的C程序在顺序和并行(OpenMP)环境。我们提供的见解抽象表现主义编程,通过比较的特点和性能的数值松弛基准写在C99,C99与OpenMP指令,调度代码,和杂注,并在一个函数数组语言。我们比较了三种算法风格:if/then/else,手工优化的循环分割,以及一个抽象的,其根源在于APL的函数式风格。我们表明,算法匹配或优于串行C,手工优化和抽象风格生成相同的代码,因此具有相同的性能。此外,并行变体的性能也比最好的OpenMP C变体高出三分之一,而无需修改源代码。在优化过程中保留算法的抽象表达式为为不同的体系结构生成完全不同的代码打开了大门。[The作者列表是错误的,但我看没有办法纠正,尽管事实上EasyChair有正确的作者列表。
Programming with abstract, mathematical expressions offers benefits including terser programs, easier communication of algorithms, ability to prove theorems about algorithms, increased parallelism, and improved programming productivity. Common belief is that higher levels of abstraction imply a larger semantic gap between the user and computer and, therefore, typically slower execution, whether sequential or parallel. In recent years, domain-specific languages have been shown to close this gap through sophisticated optimizations benefitting from domain-specific knowledge. In this paper, we demonstrate that the semantic gap can also be closed for non-domain-specific functional array languages, without requiring embedding of language-specific semantic knowledge into the compiler tool chain. We present a simple example of APL-style programs, compiled into C-code that outperform equivalent C programs in both sequential and parallel (OpenMP) environments. We offer insights into abstract expressionist programming, by comparing the characteristics and performance of a numerical relaxation benchmark written in C99, C99 with OpenMP directives, scheduling code, and pragmas, and in , a functional array language. We compare three algorithmic styles: if/then/else, hand-optimized loop splitting, and an abstract, functional style whose roots lie in APL. We show that the algorithms match or outperform serial C, and that the hand-optimized and abstract styles generate identical code, and so have identical performance. Furthermore, parallel variants also outperform the best OpenMP C variant by up to a third, with no source code modifications. Preserving an algorithm's abstract expression during optimization opens the door to generation of radically different code for different architectures. [The author list is wrong, but I see no way to correct, despite the fact that EasyChair has the correct author list.]
基本线性代数编译器
DOI: --
发表时间: 2014
期刊: IEEE/ACM International Symposium on Code Generation and Optimization
影响因子: --
作者:
Daniele G. Spampinato;Markus Püschel
通讯作者: Markus Püschel
APL 编译器
DOI: --
发表时间: 1987
期刊: Springer: New York
影响因子: --
作者:
T. Budd
通讯作者: T. Budd
Apex:apl并行执行器
DOI: --
发表时间: 1997
期刊:
影响因子: --
作者:
Robert Bernecky
通讯作者: Robert Bernecky
APL/370 编译器以及与 APL 解释器和 FORTRAN 的一些性能比较
DOI: --
发表时间: 1986
期刊: APL Conference
影响因子: --
作者:
Wai
通讯作者: Wai
剑麻数组
DOI: --
发表时间: 1991
期刊:
影响因子: --
作者:
J. Feo
通讯作者: J. Feo