私は動的言語 (Clojure) を使用して、JCuda を使用したインタラクティブな開発方法で CUDA コンテキストを作成しています。多くの場合、への呼び出しを含む初期化子を呼び出しますjcuda.driver.JCudaDriver/cuInit
。cuInit を複数回呼び出しても安全ですか? また、cuInitのdestroyメソッドのようなものはありますか?エラーコードCUDA_ERROR_DEINITIALIZED
が返ってくる可能性があるのでお願いします。
1 に答える
3
質問に答えると、はい、おそらくcuInit
複数回呼び出しても安全です。そうすることによる副作用に気づいていません。
ただし、cuInit
API 内で 1 回限りの初期化プロセスのみをトリガーすることに注意してください。デバイスやコンテキストでは何もせず、CUDA_ERROR_DEINITIALIZED を返すことは絶対にできません。アプリケーションを呼び出した後に実行する手順cuInit
(つまり、コンテキストの作成) を実行すると、実際に影響があります。これを行うと、呼び出すたびに新しいコンテキストが作成され、コンテキストがアクティブに破棄されない場合、リソースの枯渇が発生します。API の同等の初期化解除呼び出しはありません。意図は、一度初期化されると、アプリケーションが終了するまでランタイム API がその状態にとどまることが期待されることだと思います。
于 2012-09-09T10:11:29.380 に答える