zoukankan      html  css  js  c++  java
  • (原)mkl的cblas_sgemm和cblas_dgemm

    转载请注明出处:

    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:行优先 & 不转置时,$ldage max (1,k)$

           行优先 & 转置时,$ldage max (1,m)$

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

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

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

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

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

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

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

  • 相关阅读:
    AxInterop.VPIClient DLL注册
    多个事务同时操作数据库
    aspx小试
    WPF 或得PNG图片的外形Path的Data
    Spass导出数据
    Excel VBA小试
    合并Excel文件
    asp.net 中文编码问题
    Delphi中的容器类(3)
    Delphi中的容器类(1)
  • 原文地址:https://www.cnblogs.com/darkknightzh/p/5553336.html
Copyright © 2011-2022 走看看