所以我有一个执行矩阵乘法的代码,但问题是当我使用库-lcublas和编译器nvcc时它只返回零;但是,当我使用编译器g ++和库-lblas时,只需对函数名称进行一些调整就可以很好地运行代码。
你能使用-lcublas库从不在GPU上的内存中执行矩阵乘法吗?
这是返回0的代码:
extern "C" //external reference to function so the code compiles
{
double cublasDdot(int *n, double *A, int *incA, double *B, int *incB);
}
//stuff happens
cout << "Calculating/printing the contents of Matrix C for ddot...\n";
C[i][t]=cublasDdot(&n, partA, &incA, partB, &incB); //This thing isn't working for some reason (although it compiles just fine)
我使用此命令编译它:nvcc program -lcublas
但这确实有效:
extern "C" //external reference to function so the code compiles
{
double ddot_(int *n, double *A, int *incA, double *B, int *incB);
}
//stuff happens
C[i][t]=ddot_(&n, partA, &incA, partB, &incB);
使用g++ program -lblas
答案 0 :(得分:1)
cublas需要一个功能正常的CUDA GPU。
可能你没有做错误检查。阅读cublas manual中如何进行错误检查的内容。看一些error checking sample code。
cublas的普通用法要求将数据传输到GPU并将结果传回。