转载请注明出处:

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. oracle表空间使用情况查询

    1. 查看所有表空间大小 SQL> select tablespace_name,sum(bytes)/1024/1024 from dba_data_files 2 group by tabl ...

  2. 五种实用DOM方法总结

    DOM:Document Object Model 文档对象模型 对象的三种类型:用户定义类型.内建对象.宿主对象 节点类型:元素节点.文本节点.属性节点 getElementById()方法: 将返 ...

  3. javascript的prototype原理理解

    prototype是函数的内置属性,每一个function都拥有这样一个属性,在js的面向对象编程上,prototype发挥着强大的作用. 某天,春哥问我你知道prototype的原理吗?我突然懵了, ...

  4. Alert方法重写

    在正规项目中,总感觉alert框是非常难看的,但是有的时候又必须添加alert框来给用户一种警醒,废话不多说,先上图

  5. Altium Designer 生成 Mach3 G代码的程序

    Altium Designer做PCB设计,还是很方便的,最近头脑发热,在网上买了一套CNC机床,用来做钻孔用,但是翻来翻去,基本上所有的软件都是铣削功能,而且很多软件很复杂.翻了好几天,发现没有什么 ...

  6. Shell脚本调试技术

    http://www.ibm.com/developerworks/cn/linux/l-cn-shell-debug/ 一. 前言 shell编程在unix/linux世界中使用得非常广泛,熟练掌握 ...

  7. 使用AlarmManager进行定时任务处理

    1:UploadingService.java package com.example.service; import com.example.broadcast.AlarmReceiver; imp ...

  8. LeetCode_Rotate Image

    You are given an n x n 2D matrix representing an image. Rotate the image by 90 degrees (clockwise). ...

  9. WINAPI大全~

    http://www.alsprogrammingresource.com/win32_functions_g.html

  10. SHELL种类,版本及选择

    SHELL种类,版本及选择 凡是使用 *INX 的人,不论是作为 login shell 还是编程,多少都要接触到 Shell.经过多年的发展, Shell 的种类繁多.除了我们熟悉的 sh.ksh. ...