论文标题

自动利用稀疏加速度

Automatically Harnessing Sparse Acceleration

论文作者

Ginsbach, Philip, Collie, Bruce, O'Boyle, Michael F. P.

论文摘要

稀疏线性代数对于许多科学程序都是核心,但是编译器无法很好地对其进行优化。可以使用高性能的图书馆,但采用成本很大。此外,图书馆将程序绑定到特定于供应商的软件和硬件生态系统中,创建不可便利的代码。 在本文中,我们根据我们的规范语言开发了一种新方法,用于线性代数计算的实施者(LILAC)。与其要求应用程序开发人员(重新)为给定库编写每个程序,而是由图书馆实施者转移到一次性描述。启用淡紫色的编译器将其用于插入适当的库例程,而无需更改源代码。 淡紫色提供自动数据编组,并在呼叫之间保持状态并最大程度地减少数据传输。在编译器中间表示中检测到合适的图书馆插入位置,而与源语言无关。 我们评估了用Fortran编写的大规模科学应用;标准C/C ++和Fortran基准;和C ++图分析内核。在不使用用户干预的情况下,在异质平台,应用程序和数据集中,我们显示的加速度为1.1 $ \ times $至10美元$ \ times $。

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$\times$ to over 10$\times$ without user intervention.

扫码加入交流群

加入微信交流群

微信交流群二维码

扫码加入学术交流群,获取更多资源