-1

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

4

1 回答 1

1

cublas 需要正常运行的 CUDA GPU。

可能您没有进行错误检查。在cublas 手册中阅读如何进行错误检查。并查看一些错误检查示例代码

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

于 2013-05-18T21:16:18.470 回答