问题描述
我想在 GPU 上将两个 2x2 矩阵相乘,但出现此错误。这是我的代码和错误。
#include <cublas_v2.h>
#include <iostream>
#include <cuda.h>
#include <curand.h>
#include <curand_kernel.h>
#include <thrust/device_vector.h>
#include <thrust/execution_policy.h>
int main(){
int nr_rows_A,nr_cols_A,nr_rows_B,nr_cols_B,nr_rows_C,nr_cols_C;
// for simplicity we are going to use square arrays
nr_rows_A = nr_cols_A = nr_rows_B = nr_cols_B = nr_rows_C = nr_cols_C = 2;
int m,n,k,lda,ldb,ldc;
m = n = k = lda = ldb = ldc= nr_rows_A;
thrust::device_vector<float> d_A(nr_rows_A * nr_cols_A),d_B(nr_rows_B * nr_cols_B),d_C(nr_rows_C * nr_cols_C);
thrust::sequence(d_A.begin(),d_A.end(),1);
thrust::sequence(d_B.begin(),d_B.end(),5);
const float * dv_ptra = thrust::raw_pointer_cast(&d_A[0]);
const float * dv_ptrb = thrust::raw_pointer_cast(&d_B[0]);
float * dv_ptrc = thrust::raw_pointer_cast(&d_C[0]);
cublasHandle_t handle;
cublasCreate(&handle);
float alpha = 1;
float beta =0;
cublasSgemm(handle,CUBLAS_OP_N,m,&alpha,dv_ptra,dv_ptrb,&beta,dv_ptrc,ldc);
cublasDestroy(handle);
for(int i = 0; i < nr_rows_A * nr_cols_A; i++){
std::cout<<d_C[i]<<std::endl;
}
}
这是我得到的错误:
Creating library a.lib and object a.exp
tmpxft_000020a4_00000000-19_inverse.obj : error LNK2019: unresolved external symbol cublasCreate_v2
referenced in function main
tmpxft_000020a4_00000000-19_inverse.obj : error LNK2019: unresolved external symbol cublasDestroy_v2
referenced in function main
tmpxft_000020a4_00000000-19_inverse.obj : error LNK2019: unresolved external symbol cublasSgemm_v2
referenced in function main
a.exe : Fatal error LNK1120: 3 unresolved externals
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)