BLAS:C中的Matrix产品?

C_C*_*ing 2 c performance product matrix blas

感谢BLAS,我想用C语言实现一些快速操作(没有机会选择另一个库,它是我项目中唯一可用的库).我做了以下操作:

  • 反转方阵,
  • 制作矩阵乘积A*B,其中A是计算的逆矩阵,B是矢量,
  • 求和两个(非常长)向量.

我听说BLAS可以进行这种操作并且非常快.但我搜索并发现没有任何东西(在C代码行中,我的意思),这可以让我理解并应用它.

Hri*_*iev 5

BLAS库最初是在Fortran中编写的.C的接口称为CBLAS,其前缀为所有函数cblas_.

不幸的是,BLAS你只能直接解决最后两点:

  • sgemv(单精度)或dgemv(双精度)执行矩阵向量乘法
  • saxpy(单精度)或daxpy(双精度)执行一般矢量矢量加法

BLAS不处理反转矩阵的更复杂操作.为此,有一个基于BLAS构建的LAPACK库,并提供线性代数操作.LAPACK中的一般矩阵求逆是用sgetri(单精度)或dgetri(双精度)完成的,但是还有其他的反转例程可以处理像对称矩阵这样的特定情况.如果你反转矩阵只是为了稍后乘以一个向量,那么它实际上是求解一个线性方程组,并且有sgesv(单精度)和dgesv(双精度).

您只能通过基本上(重新)实现其中一个LAPACK例程来使用BLAS操作来反转矩阵.

有关更多详细信息和示例,请参阅许多BLAS/LAPACK实现之一,例如英特尔MKLATLAS.