线性代数运算的特定领域编译器
1. 引言
在过去30年里,线性代数库的发展极为成功,产生了各种可靠且高效的计算内核。然而,这些内核受限于严格的接口,用户无法传递特定于目标问题的知识。如果有这些知识,就有可能开发出比传统库性能更高的特定领域算法。
本文介绍了一个用Mathematica编写的线性代数编译器的初步工作。该编译器能自动利用特定于应用的知识来生成高性能算法。它以目标方程以及操作数的结构和属性信息作为输入,输出能利用这些给定信息的算法。就像传统编译器将程序分解为处理器直接支持的汇编指令并尝试不同类型的优化一样,这个线性代数编译器将目标操作分解为库支持的内核,并生成一系列可行的算法,其分解过程紧密模仿了人类专家的思维过程。
为了展示该编译器的潜力,我们将其应用于计算生物学中的一个具有挑战性的操作——全基因组关联研究(GWAS)。GWAS是基因组学和医学遗传学领域中常用的工具,其核心涉及一个具有非独立结果的线性回归分析,通过求解二维广义最小二乘问题(GLS)序列来实现。传统的求解方法,如使用MATLAB或LAPACK,无法利用GWAS的特定结构。而该编译器应用于GWAS时,能自动生成数十种算法,其中许多算法的性能比现有技术高出四倍或更多。
2. 相关工作
有许多研究项目专注于特定领域的语言和编译器。例如,SPIRAL项目专注于信号处理变换,Tensor Contraction Engine(TCE)专注于张量收缩。与SPIRAL的主要区别在于属性推断。FLAME项目的目标之一是系统地生成算法,其方法基于操作数的分区和循环不变量的自动识别,已成功应用于许多操作,产生了数百种高性能算法。而本文的方法与FLAME正交,不进行操作数的分区,主
超级会员免费看
订阅专栏 解锁全文
1050

被折叠的 条评论
为什么被折叠?



