转载请注明出处:

http://www.cnblogs.com/darkknightzh/p/5553336.html

参考网址:

mkl-11.3.2-developer-reference-c_0.pdf(intel官网下载)

http://goodluck1982.blog.sohu.com/94851969.html

void cblas_sgemm(const CBLAS_LAYOUT Layout, const CBLAS_TRANSPOSE transa, const CBLAS_TRANSPOSE transb, const MKL_INT m, const MKL_INT n, const MKL_INT k, const float alpha, const float *a, const MKL_INT lda, const float *b, const MKL_INT ldb, const float beta, float *c, const MKL_INT ldc);

void cblas_dgemm(const CBLAS_LAYOUT Layout, const CBLAS_TRANSPOSE transa, const CBLAS_TRANSPOSE transb, const MKL_INT m, const MKL_INT n, const MKL_INT k, const double    alpha, const double *a, const MKL_INT lda, const double *b, const MKL_INT ldb, const double beta, double *c, const MKL_INT ldc);

参考intel的官方pdf手册

计算:C := alpha*op(A)*op(B) + beta*C

注意:a、b、c指输入的缓冲区,A、B、C指真正需要计算的缓冲区(如果需要对一小块矩阵进行计算,这两组就不一样了)。

其中,op(X) 表示:

op(X) = X,原始矩阵

op(X) = ${{X}^{T}}$,转置矩阵

op(X) = ${{X}^{H}}$,共轭矩阵

A为m*k的矩阵(m行k列)

B为k*n的矩阵

C为m*n的矩阵

参数:

Layout:表示二维矩阵存储是按行优先(CblasRowMajor)还是列优先(CblasColMajor)。

C++里面是行优先存储的;fortran是列优先存储数据。(为了让fortran调用方便吧)

transa、transb:可为CblasNoTrans、CblasTrans、CblasConjTrans

m:矩阵a和c的行数

n:矩阵b和c的列数

k:矩阵a的列数,矩阵c的行数

lda:行优先 & 不转置时,$lda\ge \max (1,k)$

行优先 & 转置时,$lda\ge \max (1,m)$

由于用的是C++,不太可能会使用fortran,列优先就不管了(ldb和ldc也不考虑)

ldb:行优先 & 不转置时,ldb*k的矩阵,b矩阵左上角包含n*k的B矩阵

行优先 & 转置时,ldb*n的矩阵,b矩阵左上角包含k*n的B矩阵

ldc:行优先时,$ldc\ge \max (1,n)$

由于用的是C++,不太可能会使用fortran,列优先就不管了

如上面注意的地方所说,如果不是计算小块矩阵的话,实际上lda、ldb、ldc和各自的m、n、k相等(注意行优先和列优先)

小块的问题,可见参考网址。

(原)mkl的cblas_sgemm和cblas_dgemm的更多相关文章

  1. (原)mkl用到的函数

    转载请注明出处: http://www.cnblogs.com/darkknightzh/p/5585301.html 计算 $C=\alpha *A*B+\beta *C$: void cblas_ ...

  2. (原)使用mkl计算特征值和特征向量

    转载请注明出处: http://www.cnblogs.com/darkknightzh/p/5585271.html 参考文档:mkl官方文档 lapack_int LAPACKE_sgeev(in ...

  3. (原)使用mkl中函数LAPACKE_sgesv计算矩阵的逆矩阵

    转载请注明出处: http://www.cnblogs.com/darkknightzh/p/5578027.html 参考文档:mkl的说明文档 lapack_int LAPACKE_sgesv(i ...

  4. Intel MKL函数之 cblas_sgemm、cblas_sgemm_batch

    cblas_sgemm int m = 40; int k = 20; int n = 40; std::vector<float> a(m*k, 1.0); std::vector< ...

  5. 从 SVM 到多核学习 MKL

    SVM是机器学习里面最强大最好用的工具之一,它试图在特征空间里寻找一个超平面,以最小的错分率把正负样本分开.它的强大之处还在于,当样本在原特征空间中线性不可分,即找不到一个足够好的超平面时,可以利用核 ...

  6. cblas_sgemm cblas.h

    BLAS(Basic Linear Algebra Subprograms)库,是用Fortran语言实现的向量和矩阵运算库,是许多数值计算软件库的核心, 但也有一些其它的包装, 如cblas是C语言 ...

  7. UBUNTU 16.04 + CUDA8.0 + CUDNN6.0 + OPENCV3.2 + MKL +CAFFE + tensorflow

    首先说一下自己机子的配置 CPU:Intel(R) Core(TM) i5-5600 CUP @3.20GHz *4 GPU : GTX 1060 OS : 64bit Ubuntu16.04LTS ...

  8. VS2019配置MKL教程(Windows)

    下载链接:https://software.intel.com/en-us/mkl 1.文件下载 官网注册后,选择MKL下载下来,安装到指定目录就行,不在多说. 2.配置文件 首先创建一个Window ...

  9. MKL库矩阵乘法

    此示例是利用Intel 的MKL库函数计算矩阵的乘法,目标为:\(C=\alpha*A*B+\beta*C\),由函数cblas_dgemm实现: 其中\(A\)为\(m\times k\)维矩阵,\ ...

随机推荐

  1. C++11 lambda表达式学习

    lambda表达式是函数式编程的基础.咱对于函数式编程也没有足够的理解,因此这里不敢胡言乱语,有兴趣的可以自己查找相关资料看下.这里只是介绍C++11中的lambda表达式自己的认识.这里有参考文档h ...

  2. C# 获取当前路径

    // 获取程序的基目录.System.AppDomain.CurrentDomain.BaseDirectory  F:\广告编辑系统新\taxi_edit\taxi_form\bin\Debug\ ...

  3. pyqt5模块

  4. Asp.Net MVC3.0 Partial RenderPartial Action RenderAction 区别和用法

    本人写的博文不多,专业知识不强,以下纯属于个人笔记.如有不对,还请各路大拿,拍砖指导,谢谢! 区别: 1.Partial 与 RenderPartial 两个方法性质基本一样,只是把一个静态用户控件给 ...

  5. OSharp 学习(一)

    OSharp3.0 由郭明峰组织开发,已经相对比较完整,从底层代码开始阅读难度比较大. 故采用自上而下的方式,使用到的时候再完善相关功能.希望通过此教程能够找到志同道合的人. 注:请勿抄袭 请参看OS ...

  6. AngularJS 基础教程二:

    5.过滤器 过滤器的主要功能是格式化数据 可以使用Angular提供的过滤器,也可以自定义过滤器 Angular过滤器: currency(货币).date(日期).filter(子串匹配).json ...

  7. [POJ] 3468 A Simple Problem with Integers [线段树区间更新求和]

    A Simple Problem with Integers   Description You have N integers, A1, A2, ... , AN. You need to deal ...

  8. ORA-16014报错解决

    今天在本地数据库操作的时候报错: SQL> alter database open;alter database open*第 1 行出现错误:ORA-16014: 日志 3 的序列号 55 未 ...

  9. XML Schema <第三篇>

    验证XML文档是否符合议定的XML结构有两种方法,分别是DTD模式与XML Schema.本文主要介绍XML Schema. 一.XML Schema的优点 XML Schema基于XML,没有专门的 ...

  10. 【转】linux tree命令以树形结构显示文件目录结构 ---- 不错

    原文网址:http://jingyan.baidu.com/article/acf728fd19c7eff8e510a3eb.html 今天小编来给分享Linux 系统下一个非常有用的命令的使用:tr ...