自动利用稀疏加速度
Automatically Harnessing Sparse Acceleration
摘要:
稀疏线性代数是许多科学程序的核心,但编译器未能很好地优化它。高性能库是可用的,但采用成本很高。此外,库将程序绑定到特定于供应商的软件和硬件生态系统中,从而创建不可移植的代码。在本文中,我们开发了一种新的方法,我们的规约语言的线性代数计算(LiLAC)的实现者的基础上。不需要应用程序开发人员为给定的库(重新)编写每个程序,而是将负担转移到库实现者的一次性描述中。启用LiLAC的编译器使用此方法插入适当的库例程,而无需更改源代码。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.
机构、总结、中文摘要均由AI分析而来,可能存在错误,请以论文正文为准。