cblas_sgemm cblas_sgemv

http://blog.csdn.net/chenlanjie842179335/article/details/8043925

矩阵与矩阵的乘法,分为双精度的cblas_dgemm和单精度的cblas_sgemm,两个函数的参数意义一样,只是类型不一样

运算式:C=alpha*A*B+beta*C 

一般取alpha=1.0,beta=0.0 即计算式:C=A*B

cblas_sgemm(CblasRowMajor, CblasNoTrans,CblasNoTrans,M,N,K,alpha,A,A的列数,B,B的列数,beta,C,C的列数)

CblasRowMajor表示数组时行为主,相应矩阵大小为(M*K)乘以(K*N),可以得到M,K,N的值

前面的CblasNoTrans表示A是否转置,后面表示B是否转置,即可以表示A(T)*B=C或者A*B(T)=C或者A(T)*B(T)=C,如果是A的转置乘以B,M,N是A的转置的行数和列数

cblas_dgemm(CblasRowMajor, CblasNoTrans,CblasNoTrans,M,N,K,alpha,A,A的列数,B,B的列数,beta,C,C的列数)

矩阵与向量的乘法,同样有两个cblas_sgemv和cblas_dgemv

运算式:C=alpha*A*b+beta*C 

一般取alpha=1.0,beta=0.0 即计算式:C=A*b

cblas_sgemv(CblasRowMajor, CblasNoTrans,A的行数,A的列数,alpha,A,A的列数,b,1,beta,C,1)

如果是A的转置*b,用

cblas_sgemv(CblasRowMajor, CblasTrans,A的行数,A的列数,alpha,A,A的列数,b,1,beta,C,1)  =====> 为什么转置后,其他参数不变?————个人认为ablas_sgemv()中参数MN表示的在op()操作之前的时候矩阵的行数和列数,即不管是Y←αAX + βY还是Y←αA'X + βY,都是矩阵A本身的行数和列数,而非其转置。

你可能感兴趣的:(cblas_sgemm cblas_sgemv)