There are three levels of BLAS operations,
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,
The type of matrices are,
Each operation is defined for four precisions,
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为“双精度复数矩阵乘法”。
关于blas的具体介绍请参考:http://www.netlib.org/blas/
下面是一些具体的函数说明:
参考:http://blog.csdn.net/g_spider/article/details/6054990
cblas使用:
extern "C" {
#include
#include
}
int main(void) {
const enum CBLAS_ORDER Order=CblasRowMajor;
const enum CBLAS_TRANSPOSE TransA=CblasTrans;
const enum CBLAS_TRANSPOSE TransB=CblasNoTrans;
const int M=1;//A的行数,C的行数
const int N=2;//B的列数,C的列数
const int K=3;//A的列数,B的行数
const double alpha=1;
const double beta=0;
const int lda=M;//A的列
const int ldb=N;//B的列
const int ldc=N;//C的列
double A[]={ 1,2,3};
double B[]={ 5,4,3,2,1,0};
double C[2];
cblas_dgemm(Order, TransA, TransB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc);
for(int i=0;i<1;i++)
{
for(int j=0;j<2;j++)
{
cout<