1

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 をプロファイリングする方法はありますか?

4

2 に答える 2

0

webstart CLInfo アプリケーションを見てみましょう: http://jogamp.org/deployment/webstart-next/jocl-demos/clinfo.jnlp (プロジェクト: http://jogamp.org/jocl-demos/www/ ) または開始コマンドライン バージョン:

java -jar jocl.jar:gluegen-rt.jar -Djava.library.path="path/to/jocl/libs:path/to/gluegen-rt/libs" com.jogamp.opencl.util.CLInfo

すべてのデバイス プロパティの完全な読み出しが表示されます。CL_DEVICE_GLOBAL_MEM_SIZE および CL_DEVICE_MAX_MEM_ALLOC_SIZE プロパティは、おそらく探している小道具です。

[編集] プロパティはここに文書化されています: http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clGetDeviceInfo.html

于 2011-05-06T22:07:03.083 に答える
0

CL.CL_MEM_SIZE および CL_DEVICE_GLOBAL_MEM_CACHE_SIZE は、clGetDeviceInfo がデバイスを照会するためのパラメーターとして使用される定数値です。

http://www.jocl.org/doc/org/jocl/CL.html#clGetDeviceInfo(org.jocl.cl_device_id, int, long, org.jocl.Pointer, long[])

メソッド clGetDeviceInfo は、デバイス情報を照会するために使用するメソッドです。param_name で要求したパラメーターの値を返します。このリンクには、利用可能なすべてのパラメーター名と簡単な説明のリストがあります。(CL_DEVICE_GLOBAL_MEM_SIZE が探しているものである必要があります)。

于 2011-05-09T13:26:31.127 に答える