高效线性代数程序的自动生成
摘要:高层次语言和库(如Matlab和Eigen)方便地捕捉了应用专家对线性代数计算的推理方式,而高性能数值线性代数库的开发者使用的抽象层级与之不匹配。后者表达的是BLAS和LAPACK库中的核心功能。不幸的是,从高层次计算到高效的核心序列的转换是一项非常复杂的任务,需要对线性代数和高性能计算都有广泛的知识。几乎所有高层次语言和库内部都使用高效的核心,然而,转换算法过于简单,导致对这些核心的使用效果不佳,性能损失严重。为了兼具高层次语言的生产力和低层次核心的效率,我们正在开发一个用于线性代数问题的代码生成器Linnea。Linnea的输入是线性代数问题的高层次描述,输出是对高性能核心的高效调用序列。在25个应用问题中,Linnea生成的代码始终优于Matlab、Julia、Eigen和Armadillo,加速效果超过10倍。
作者:Henrik Barthels, Christos Psarras, Paolo Bientinesi
论文ID:1907.02778
分类:Mathematical Software
分类简称:cs.MS
提交时间:2020-08-10