• (原)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相等(注意行优先和列优先)

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

  • 相关阅读:
    虚方法、重写方法和抽象方法[转载]
    枚举的默认构造为第一个成员值!
    自定义Attribute例子!
    Python 处理MD5
    php5 反射refection 的用途
    python Sleep休眠函数
    python处理urlencode的两种方式
    python操作mysql进行更新的时候,必须有commit
    Python repr() 或str() 函数
    python抓取网页内容
  • 原文地址:https://www.cnblogs.com/darkknightzh/p/5553336.html
Copyright © 2020-2023  润新知