我不了解BLAS,LAPACK和ATLAS之间的关系,以及如何将它们一起使用!我一直在浏览他们的所有手册,对BLAS和LAPACK以及它们在很少的示例中如何使用都有一个大致的了解,但是我找不到使用ATLAS的任何实际示例来了解它们与ALAS的关系这两个。

我正在尝试对矩阵做一些底层工作,我的主要语言是C。首先我想使用GSL,但是它说如果要获得最佳性能,则应该使用BLAS和ATLAS。有没有一个很好的网页给出了一些很好的示例(如何在C中一起使用)?换句话说,我正在寻找有关使用这三个(或它们的任何子集!)的教程。总之我很困惑!

最佳答案

BLAS是低级矩阵和 vector 算术运算(“将 vector 乘以标量”,“将两个矩阵相乘并加到第三个矩阵”等)的集合。

LAPACK是高级线性代数运算的集合。诸如矩阵分解(LU,LLt,QR,SVD,Schur等)之类的事情用于执行“查找矩阵的特征值”或“查找矩阵的奇异值”或“求解线性系统”之类的事情”。 LAPACK建立在BLAS之上; LAPACK的许多用户只使用LAPACK接口(interface),根本不需要了解BLAS。 LAPACK通常与BLAS分开编译,并且可以使用任何可用的高度优化的BLAS实现。

ATLAS是BLAS接口(interface)的一种可移植的,相当不错的实现,它还实现了一些最常用的LAPACK操作。

“您应该使用”的内容在某种程度上取决于您要执行的操作以及所使用的平台的详细信息。但是,“使用ATLAS + LAPACK”不会出错。

10-06 14:18
查看更多