CBLAS编译安装与使用举例(2)

// <strong>因为程序是C++,而CBLAS是C语言写的,所以在此处用extern关键字</strong>
extern"C"
{
    #include"cblas.h"      // <strong>由于cblas.h文件已经拷贝到工作目录中,只需用双引号 </strong>
}
#include<iostream>
using namespace std;
int main(void) {
    const enum CBLAS_ORDER Order=CblasRowMajor;
    const enum CBLAS_TRANSPOSE TransA=CblasNoTrans;
    const enum CBLAS_TRANSPOSE TransB=CblasNoTrans;
    const int M=4;//A的行数,C的行数
    const int N=2;//B的列数,C的列数
    const int K=3;//A的列数,B的行数
    const float alpha=1;
    const float beta=0;
    const int lda=K;//A的列
    const int ldb=N;//B的列
    const int ldc=N;//C的列
    const float A[K*M]={1,2,3,4,5,6,7,8,9,8,7,6};
    const float B[K*N]={5,4,3,2,1,0};
    float C[M*N];
 
    cblas_sgemm(Order, TransA, TransB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc);
   
    for(int i=0;i<M;i++)
    {
      for(int j=0;j<N;j++)
      {
          cout<<C[i*N+j]<<"/t";
      }
      cout<<endl;
    }
 
    return EXIT_SUCCESS;
}

在编译的时候需要带上cblas_LINUX.a和libblas.a 

比如:g++ main.cpp cblas_LINUX.a libblas.a -o main

如果是写成Makefile文件,则修改变量OBJS = main.o cblas_LINUX.a libblas.a

当然,这里假定是这两个.a文件是放在可以直接访问的位置,或者写全路径也可以。

应用优化

这个有时间再补充,现在这个时间比较尴尬。不过确实对应用起到了优化作用,运行时间从160多s降到了115s,只是简单将串行代码用函数clabs_caxpy替代。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/76711e9223fc70f893ce4a70531d95e2.html