2

我正在使用 cublasDgemm 将两个矩阵相乘。

我编写了一个使用 cublasDgemm 并返回指向输出的指针的方法。

它似乎在我的单元测试中运行良好,但在我的应用程序代码中失败(返回代码 CUBLAS_STATUS_EXECUTION_FAILED)。

我现在检查了很多次代码,一切似乎都很好..有没有更好的错误解释?

更新:似乎每个第二个 cublasDgemm 调用都有效。第一个我得到这个错误,第二个我成功了..有什么想法吗?

更新2:这是我的电话

    const double alpha = 1.0;

    const double beta = 0;

cublasStatus_t ret = cublasDgemm(RmCudaMatrix::handle_, CUBLAS_OP_N, CUBLAS_OP_N, 
    Rows(), b.Cols(), Cols(), &alpha,
    device_matrix_, Rows(), b.device_matrix_, b.Rows(), &beta,
    output->device_matrix_, output->Rows());

谢谢。

4

1 回答 1

1

CUBLAS 函数可以异步运行,因此,当 CUBLAS 调用返回cublasStatus_tother thatCUBLAS_STATUS_SUCCESS时,错误可能在先前的调用中。要确定是否是这种情况,请在每次使用 CUBLAS 调用后检查 CUDA 错误状态cudaGetLastError()

于 2012-12-30T19:14:53.153 回答