GPUで実行されているJOCl.org(jogamps joclとは異なります)を書いています。GPU のグローバル メモリ制限を超えないように注意する必要がある十分なデータを処理していました。これを行うには、GPU のメモリ量をプログラムで判断する方法が必要です。これを行うには単純なJOCLメソッド/変数が必要だと思いますが、何らかの理由でそれが何であるかを理解できないようです。CL.CL_MEM_SIZE と CL_DEVICE_GLOBAL_MEM_CACHE_SIZE を見てきましたが、どちらも 4100 前後の値を返します。私は現在、512 MB を含むと思われるグラフィックス カードで作業していることを知っています。
また、必要なほど多くのメモリを使用できないようです。私の最悪のシナリオでは、2^22 float のフレームを処理するカーネルを実行する必要があり、内部的にフレーム サイズの 2 倍のデータが必要になります。2 つのフレームをキャッシュしようとすると (つまり、2 フレーム * 2^22 * 2^2 バイト/フロート * オーバーヘッドの 2 = 2^26)、問題なくキャッシュできますが、キャッシュを増やすと、一度に 3 つのフレームを処理することになります。 time (または 2^25*3) メモリが不足しているようです。ただし、512 MB のグローバル メモリのうち 100 までしか使用しない方がよいと思います。使用されていないときにメモリを適切に解放していると思いますが、どうやら何か間違っているか、GPU の宣伝されている 512 MB を誤解しているようです。この混乱を説明できる人はいますか?
実際のメモリ使用量を把握するために GPU をプロファイリングする方法はありますか?