Optimising purely functional GPU programs

Optimising purely functional GPU programs
复制标题

优化纯函数式 GPU 程序

DOI:
10.1145/2500365.2500595
复制
发表时间:
2013
期刊:
Proceedings of the 18th ACM SIGPLAN international conference on Functional programming
影响因子:
--
通讯作者:
T. L. McDonell
T. L. McDonell
中科院分区:
--
文献类型:
--
作者:
T. L. McDonell

文献摘要

被引文献

相似文献

纯粹的功能性的嵌入式数组程序非常适合SIMD硬件(例如GPU)。但是,此类程序的幼稚汇编很快导致代码爆炸和过度使用中间数据结构。最终的减速是在目标硬件上无法接受的,而目标硬件通常是为了实现高性能。在本文中,我们讨论了两种优化技术,共享恢复和数组融合,可以解决代码爆炸并消除多余的中间结构。从其他情况下,这两种技术都是众所周知的,但是它们对汇编的嵌入式语言提出了独特的挑战,可以在GPU上执行。我们提出了实施共享恢复和数组融合的新颖方法,并在一组基准中证明了它们的有效性。
Purely functional, embedded array programs are a good match for SIMD hardware, such as GPUs. However, the naive compilation of such programs quickly leads to both code explosion and an excessive use of intermediate data structures. The resulting slow-down is not acceptable on target hardware that is usually chosen to achieve high performance. In this paper, we discuss two optimisation techniques, sharing recovery and array fusion, that tackle code explosion and eliminate superfluous intermediate structures. Both techniques are well known from other contexts, but they present unique challenges for an embedded language compiled for execution on a GPU. We present novel methods for implementing sharing recovery and array fusion, and demonstrate their effectiveness on a set of benchmarks.