你能用cublasDdot()在非GPU内存中使用blas操作吗?

时间:2013-05-18 20:21:57

标签: c++ cuda blas cublas

所以我有一个执行矩阵乘法的代码,但问题是当我使用库-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

编译

1 个答案:

答案 0 :(得分:1)

cublas需要一个功能正常的CUDA GPU。

可能你没有做错误检查。阅读cublas manual中如何进行错误检查的内容。看一些error checking sample code

cublas的普通用法要求将数据传输到GPU并将结果传回。