2012-03-10 11 views
4

OpenCLにデータをグローバルメモリバッファに保存させる(つまり、システムメモリに決してスワップアウトされないようにする)方法がありますか?基本的に私は自分自身のニーズに合わせてGPUのメモリの一部を予約したいと思っています。他のアプリケーションがGPUのメモリを飽和させるかどうかにかかわらず、GPUに残しておきたいデータが必要です。OpenCL強制バッファをGPUに残すには

ありがとうございます!

答えて

4

GPUはCPUのメモリ管理ユニットにリンクされていないため、CPUなどのページフォルトは行いません。それらは、デバイスドライバによって制御されるブロックデバイスペリフェラルです。

OpenCLの場合、cl_memオブジェクトを作成してGPUにエンキュー(書き込み)することでGPUにメモリを割り当てると、clReleaseMemobjectを明示的に解放するまでスティックされます。バッファを再利用するには、それを解放せずにそのCl_memオブジェクトを追跡する必要があります。

+2

しかし、GPUに128MBのバッファをcl_memを使って作成し、それにいくつかのものを書き込むとどうしたらいいですか?即座にデータを読み返すと瞬時になりますが、 GPUメモリー重いゲームのようなゲームをプレイしている間に数時間(もちろんそれを放すことなく)、そして私のメモリーにもう一度アクセスしようとすると、およそ1秒かかるでしょう - 私のハードから128MBを読むのに必要な時間。ドライブ。確かにデータがまだGPUに残っていれば、PCI-Eの帯域幅(私はおよそ4.5GB /秒と評価された)を考慮して、それを読み返すのにもう時間がかかりませんでしたか? – Thomas

+0

私はこの回答を受け入れることもできますが、とにかく何をしたいのかは重要ではありません。ありがとう! – Thomas

+0

問題をよく理解しています。これはGPUを作成し、モデル化するものですか? OpenCLのどのバージョン?私は問題を再確認しようとします。 –

関連する問題