5

cudaMalloc へのすべての呼び出しが失敗し、メモリ不足エラーが発生するという単純な問題に直面しています。割り当てているのは 1 バイトだけです。

cuda デバイスが利用可能であり、利用可能なメモリも大量にあります (bot は対応する呼び出しでチェックされます)。

何が問題なのですか?

4

2 に答える 2

2

みなさん、ありがとうございました。

問題は実際にはcudaMalloc自体にあるのではなく、失敗したように見えるcudaの初期化に起因する実際の問題に影を落としました。

cudaへの最初の呼び出しは別のスレッドで行われたため、使用可能なGLContextがなく、失敗につながりました。コンテキストの初期化後に、メインスレッドのダミーmallocによってcudaを初期化したことを確認する必要がありました。

于 2012-12-19T11:44:07.927 に答える
2

コード自体の先頭で cudaSetDevice()、cudaDeviceSynchronize()、cudaThreadSynchronize() の順に呼び出してみてください。

デバイスが 1 つしかない場合は cudaSetDevice(0)。デフォルトでは、CUDA ランタイムはデバイス 0 を初期化します。

cudaSetDevice(0);
cudaDeviceSynchronize();
cudaThreadSynchronize();

あなたの観察に返信してください。それでも失敗する場合は、OS、アーキテクチャ、CUDA SDK バージョン、CUDA ドライバ バージョンを指定してください。可能であれば、失敗しているコード/コード スニペットを提供してください。

于 2012-12-19T08:49:33.603 に答える