BLASFEO的BLAS API:优化小矩阵性能
The BLAS API of BLASFEO: optimizing performance for small matrices
摘要:
BLASFEO是一个密集的线性代数库,提供BLAS和LAPACK类例程的高性能实现,用于嵌入式优化和其他针对相对较小矩阵的应用程序。BLASFEO定义了一个API,它使用打包矩阵格式作为其原生格式。这种格式类似于优化的BLAS的内部存储器缓冲区,但它是向用户公开的,并且它从例程调用中删除了打包成本。对于缓存中的矩阵拟合,BLASFEO优于优化的BLAS实现,无论是开源的还是专有的。本文研究了一个标准的BLAS API的BLASFEO框架,并提出了一个实现两个或两个以上的算法之间的切换优化不同的矩阵大小。由于BLASFEO中的模块化组装框架,可以轻松开发具有混合列和面板主参数的定制线性代数内核。此BLAS API的性能低于BLASFEO API,但它仍然优于优化的BLAS,特别是LAPACK库,用于匹配缓存中的矩阵。因此,它可以促进广泛的应用,其中采用标准BLAS和LAPACK库,并且矩阵大小适中。特别是,本文研究了Octave、SciPy和Julia等科学程序设计语言的好处。
英文摘要:
BLASFEO is a dense linear algebra library providing high-performance implementations of BLAS- and LAPACK-like routines for use in embedded optimization and other applications targeting relatively small matrices. BLASFEO defines an API which uses a packed matrix format as its native format. This format is analogous to the internal memory buffers of optimized BLAS, but it is exposed to the user and it removes the packing cost from the routine call. For matrices fitting in cache, BLASFEO outperforms optimized BLAS implementations, both open-source and proprietary. This paper investigates the addition of a standard BLAS API to the BLASFEO framework, and proposes an implementation switching between two or more algorithms optimized for different matrix sizes. Thanks to the modular assembly framework in BLASFEO, tailored linear algebra kernels with mixed column- and panel-major arguments are easily developed. This BLAS API has lower performance than the BLASFEO API, but it nonetheless outperforms optimized BLAS and especially LAPACK libraries for matrices fitting in cache. Therefore, it can boost a wide range of applications, where standard BLAS and LAPACK libraries are employed and the matrix size is moderate. In particular, this paper investigates the benefits in scientific programming languages such as Octave, SciPy and Julia.
机构、总结、中文摘要均由AI分析而来,可能存在错误,请以论文正文为准。