2

cublasDgemmを使用して2つの行列を乗算しています。

cublasDgemmを使用して、出力へのポインターを返すメソッドを作成しました。

単体テストではうまく機能しているようですが、アプリケーションコードでは失敗します(リターンコードCUBLAS_STATUS_EXECUTION_FAILED)。

私は今何度もコードを調べましたが、すべて問題ないようです。とにかく、より良いエラーの説明を得るために何かありますか?

更新:2回目のcublasDgemm呼び出しはすべて機能するようです。最初にこのエラーが発生し、2番目に成功しました。何かアイデアはありますか?

Update2:これは私の電話です

    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_t他の関数を返すCUBLAS_STATUS_SUCCESS場合、エラーは前の呼び出しにある可能性があります。これが当てはまるかどうかを判断するには、を使用して各CUBLAS呼び出しの後にCUDAエラーステータスを確認しますcudaGetLastError()

于 2012-12-30T19:14:53.153 に答える