6

私は CUDA By Example を読んでいて、彼らがイベントを導入したときに、cudaEventDestroy作成した各イベントを呼び出していることがわかりました。

しかし、後のいくつかの例では、このクリーンアップ機能が無視されていることに気付きました。作成したイベントやストリームを破棄するのを忘れた場合の望ましくない副作用はありますか (つまり、割り当てられたメモリを解放するのを忘れた場合のメモリ リークなど)?

4

2 に答える 2

5

終了時にアプリがまだ保持しているリソースは、OS / ドライバーによって自動的に解放されます。そのため、アプリが作成するイベントの数が限られている場合は、それらを手動で解放する必要は厳密にはありません。それでも、意図的にすべてのリソースを解放せずにアプリを終了させることは、真のリークと「意図的な」リークを区別するのが難しくなるため、悪い習慣です。

于 2012-06-06T19:30:02.850 に答える
1

本のサンプル コードにバグが見つかりました。

CUDA イベントは軽量ですが、リソース リークはリソース リークです。時間の経過とともに、それらが十分にリークされると、それらを作成できなくなります。

于 2012-06-08T05:28:33.017 に答える