BLAS库学习

首先,命名规范:

There are three levels of BLAS operations,

 

Level 1
Vector operations, e.g. y = /alpha x + y  向量操作
Level 2
Matrix-vector operations, e.g. y = /alpha A x + /beta y  矩阵与向量操作
Level 3
Matrix-matrix operations, e.g. C = /alpha A B + C    矩阵与矩阵的操作

Each routine has a name which specifies the operation, the type of matrices involved and their precisions. Some of the most common operations and their names are given below,

 

 

 

DOT
scalar product, x^T y
AXPY
vector sum, /alpha x + y
MV
matrix-vector product, A x
SV
matrix-vector solve, inv(A) x
MM
matrix-matrix product, A B
SM
matrix-matrix solve, inv(A) B

 

The type of matrices are,

 

GE
general   
GB
general band
SY
symmetric
SB
symmetric band
SP
symmetric packed
HE
hermitian
HB
hermitian band
HP
hermitian packed
TR
triangular
TB
triangular band
TP
triangular packed

Each operation is defined for four precisions,

 

S
single real
D
double real
C
single complex
Z
double complex

Thus, for example, the name SGEMM stands for "single-precision general matrix-matrix multiply" and ZGEMM stands for "double-precision complex matrix-matrix multiply".

 

因此,例如,命名为SGEMM的函数意思为“单精度普通矩阵乘法”,ZGEMM为“双精度复数矩阵乘法”。

 

 更多的,可以参考:http://www.netlib.org/blas/blasqr.pdf

 

下面这个例子是在csdn论坛上看到的,简单地改一下,可用GotoBlas2调用成功。

 

程序说明:下面的matrix.c 文件分别调用 C 代码, BLAS Level 1 函数 (ddot), BLAS Level 2 函数(dgemv) 与 BLAS Level 3的函数(DGEMM)完成矩阵计算: Yours_multiply 是 C 源代码,它直接依赖编译器生成优化代码。Ddot_Multiply,Dgemv_multiply使用Gotoblas2调用实现部分矩阵运算。Dgemm_multiply 直接调用GotoBlas2 的矩阵计算函数。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值