Linnea:高效线性代数程序的自动生成
摘要:从高级语言到底层库调用的线性代数计算的翻译是一项非常复杂的任务,需要在线性代数和高性能计算领域有专业知识。几乎所有用于矩阵计算的高级语言和库(如Matlab、Eigen)内部都使用了优化的内核,例如BLAS和LAPACK所提供的内核;然而,它们的翻译算法通常过于简单,导致对这些内核的次优使用,从而导致严重的性能损失。为了将高级语言提供的生产力和底层内核的性能结合起来,我们正在开发一个用于线性代数问题的代码生成器Linnea。Linnea的输入是一个线性代数问题的高级描述,输出是一个高性能内核调用的高效序列。Linnea使用自定义的最佳优先搜索算法,在不到一秒钟的时间内找到第一个解决方案,并在更长时间内找到越来越好的解决方案。在125个测试问题中,Linnea生成的代码几乎总是优于Matlab、Julia、Eigen和Armadillo,加速比高达甚至超过10倍。
作者:Henrik Barthels, Christos Psarras, Paolo Bientinesi
论文ID:1912.12924
分类:Mathematical Software
分类简称:cs.MS
提交时间:2020-01-01