0

私は自分の問題をCUDAフォーラムに投稿しましたが、2つのフォーラムの間にかなりの数の異なる聴衆がいる場合に備えて、ここにリンクを投稿してより多くのアイデアを得ることが適切かどうかわかりません。リンクはこちらです。特定のCUDAメモリアクセスと管理の問題の詳細についてはまだ返信がないため、ご不便をおかけして申し訳ありません。この質問に対するコメントに感謝します。前もって感謝します。

4

1 に答える 1

2

あなたのコードをもっと見ずにこれが適切かどうかはわかりませんが、CudaObjのデストラクタはどこから呼び出されていますか?

あなたが言った:

ただし、このようにすると、cudaFree()が呼び出されるCudaObjのデストラクタの行でアプリケーションを終了するときにエラーが発生します。これにより、エラーが原因でCUDAコンテキストのクリーンアップコードが実行されなかった後のメモリクリーンアップコードが発生し、メモリリークの混乱が残ります。

cudaセットアップをどのように変更したかを説明した後、thread2のメイン関数の先頭に配置します。別のスレッドからCudaObjのデストラクタを呼び出している場合、cuda初期化をスレッド2に移動しなければならなかったのと同じ理由で、cudaFreeクリーンアップの実行はエラーになります。これはすでに知っているようですが、cudaコンテキストプロセス内の単一のスレッドに固有です。ドキュメントによると、別のスレッドでのクリーンアップはサポートされていませんが、自分で試したことはありません。お役に立てれば

于 2009-11-18T18:12:47.873 に答える