|
本人是linux的初学者,最近使着调用atlas中的dgemm函数,一直出现错误,不知道该如何解决,所以想请高人帮忙看一下,谢谢。
程序如下:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "mpi.h"
#include "ATH/cblas.h"
main(int argc,char* argv[])
{
const enum CBLAS_ORDER Order=CblasColMajor;
const enum CBLAS_TRANSPOSE TA=CblasNoTrans;
const enum CBLAS_TRANSPOSE TB=CblasNoTrans;
int i,j;
double A[][3]={{1.0,2.0,3.0},{4.0,5.0,6.0}};
double B[][4]={{7.0,7.0,7.0,71.0},{8.0,8.0,8.0,81.0},{9.0,9.0,9.0,91.0}};
double C[][4]={{0.0,0.0,0.0,0.0},{0.0,0.0,0.0,0.0}};
double alpha=1.0,beta=0.0;
int M,N,K;
int lda,ldb,ldc;
double t1,t2;
MPI_Status status;
MPI_Init(&argc,&argv);
t1=MPI_Wtime();
alpha=1.0;
M=4;K=3;N=2;
lda=3;ldb=4;ldc=4;
printf("begin\n");
for(i=0;i<2;i++)
{for(j=0;j<4;j++)
printf("C[%d][%d]:%10.3f\t",i,j,C[j]);printf("\n");
}
cblas_dgemm(Order,TA,TB,M,N,K,alpha,B[0],ldb,A[0],lda,beta,C[0],ldc);
//cblas_dgemm(CblasColMajor,CblasNoTrans,CblasNoTrans,M,N,K,alpha,B[0],ldb,A[0],lda,beta,C[0],ldc);
printf("after\n");
for(i=0;i<2;i++)
{for(j=0;j<4;j++)
printf("C[%d][%d]:%10.3f\t",i,j,C[j]);printf("\n");
}
t2=MPI_Wtime();
printf("time=%f.6\n",t2-t1);
MPI_Finalize();
return 0;
}
命令:mpicc -o atlas atlas.c libatlas.a libcblas.a
出现错误:atlas.c.text+0x1c5): undefined reference to `cblas_dgemm'
collect2: ld returned 1 exit status
如果有大哥知道原因,希望能赐教,谢谢。 |
|