Automatically harnessing sparse acceleration

Automatically harnessing sparse acceleration
复制标题

DOI:
10.1145/3377555.3377893
复制
发表时间:
2020-01
期刊:
Proceedings of the 29th International Conference on Compiler Construction
影响因子:
--
通讯作者:
Philip Ginsbach;Bruce Collie;M. O’Boyle
Philip Ginsbach;Bruce Collie;M. O’Boyle
中科院分区:
其他
文献类型:
--
作者:
Philip Ginsbach;Bruce Collie;M. O’Boyle

文献摘要

相似文献

稀疏线性代数是许多科学程序的核心,但编译器未能很好地优化它。高性能库是可用的,但采用成本很高。此外,库将程序与特定于供应商的软件和硬件生态系统联系起来,创建不可移植的代码。在本文中,我们基于我们的规范语言为线性代数计算(LiLAC)的实现者开发了一种新方法。不再要求应用程序开发人员为给定的库(重新)编写每个程序,而是将负担转移到库实现者的一次性描述上。支持 LiLAC 的编译器使用它来插入适当的库例程,而无需更改源代码。 LiLAC 提供自动数据编组、维护调用之间的状态并最大限度地减少数据传输。在编译器中间表示中检测到库插入的适当位置,与源语言无关。我们评估了用 FORTRAN 编写的大规模科学应用程序;标准 C/C++ 和 FORTRAN 基准测试;和 C++ 图形分析内核。在异构平台、应用程序和数据集上,我们展示了无需用户干预即可实现 1.1 倍到 10 倍以上的加速。
Sparse linear algebra is central to many scientific programs, yet compilers fail to optimize it well. High-performance libraries are available, but adoption costs are significant. Moreover, libraries tie programs into vendor-specific software and hardware ecosystems, creating non-portable code. In this paper, we develop a new approach based on our specification Language for implementers of Linear Algebra Computations (LiLAC). Rather than requiring the application developer to (re)write every program for a given library, the burden is shifted to a one-off description by the library implementer. The LiLAC-enabled compiler uses this to insert appropriate library routines without source code changes. LiLAC provides automatic data marshaling, maintaining state between calls and minimizing data transfers. Appropriate places for library insertion are detected in compiler intermediate representation, independent of source languages. We evaluated on large-scale scientific applications written in FORTRAN; standard C/C++ and FORTRAN benchmarks; and C++ graph analytics kernels. Across heterogeneous platforms, applications and data sets we show speedups of 1.1×to over 10×without user intervention.