2011-02-02 4 views
0

私は単純な方法は、プログラムを再起動することだと思いますが、プログラムを閉じることなく同じ効果を得る方法はありますか?私は私の割り当てられたメモリ、私のコンテキスト、およびコマンドキューのための適切なリリースのステートメントを呼び出しますが、私はopenCLの呼び出しが実際に私がそれを呼び出すときに何をしても信用することはありません。openCLの処理が完了したら、すべてのリソースを解放する "正しい"方法はありますか?

たとえば、バッファを作成する呼び出しは、バッファを読み込むまで実際にバッファを作成しません。

強制的にクリーンアップする方法などがあるのか​​不思議です。ありがとう、ありがとう。

+0

なぜこれを行う必要がありますか?あなたはすべてを解放/割り当て解除した後、どのような余分なクリーンアップをすることができると思いますか?また、どのプラットフォームについて話していますか? CL仕様があなたにツールを与えるものよりも多くのクリーンアップを強制する移植可能な方法はありそうもありません。 – user57368

答えて

4

いいえ、OpenCL仕様ではclRelease *機能だけが定義されています。さらに、OpenCLオブジェクトは参照カウントされるので、参照カウントが0になると削除されます。

私は分かりませんなぜあなたはOpenCLを信頼しないのですかそれは何をすると言いますか?いくつかの実装は少しバグがありますが、OpenCLの実装が成熟するにつれてそれを修正する必要があります。

+0

バッファ作成の動作は実装の一部ですが、ハンドルの解放は明示的に定義されています。 – Tom

関連する問題