openclのバッファオブジェクトとイメージバッファオブジェクトの違いは何ですか?画像バッファはより速いが、どれくらいの程度であることは明らかであるか?どこで使用する必要がありますか?OpenCLのバッファオブジェクトとイメージバッファオブジェクト
答えて
OpenCLバッファは、グローバルメモリ内の1Dまたは2Dまたは3Dアレイです。ポインタを介してアドレス指定できる抽象オブジェクト です。バッファは読み取り専用、またはWrite_onlyまたはRead-Writeです。 イメージバッファはGPUテクスチャメモリを表します。これはピクセルx、y、z座標を指定する関数を介して がアクセスできるピクセルの配列を表します。 GPU上のイメージピクセルへのポインタアクセスはありません。
ハードウェアは、これらの2種類のバッファを別々に扱います。 OpenCLバッファは、 ホストRAMまたはGPU RAMのいずれかにあり、その2つの間で転送されます。 OpenCLイメージバッファには、OpenCLバッファの類似の 特性があります。しかし、違いはイメージバッファは読み取り専用か書き込み専用かです。読み取り専用イメージバッファの場合、GPUはイメージピクセルのコピーをすべての計算単位(= 32または64 ALU)にキャッシュできます。典型的なキャッシュサイズは8K(バイトまたはピクセルですか?)です。 また、画像ピクセルはGPU上のポインタを介してアクセスすることができないため、 x、y、z座標から物理アドレスへのマッピングは、いくつかの方法でマッピングできます。 1つの方法は、Zオーダリングです。これは、ピクセルを2次元でクラスタ化し、 x、y方向の隣接ピクセルが直線的に格納されるようにします。これにより、画像フィルタの隣接ピクセルへのアクセスが高速になります。
OpenCLバッファは一般的な配列、特に読み書き可能な配列の場合には、 または倍精度です。 OpenCL Imageバッファは、画像処理やその他の信号処理に使用されます。 入力画像/信号は読み取り専用として扱うことができます。
FYIは、OpenCL 2.xから始まり、イメージオブジェクトは読み書き可能です。
- 1. テスラK80とOpenCL
- 2. OpenCLライブラリとバインディング
- 3. OpenGL ES 2.0と頂点バッファオブジェクト(VBO)
- 4. pythonファイルのようなバッファオブジェクト
- 5. OpenCL/OpenGLとosxクラッシュ
- 6. NvidiaとAMDハードウェアのOpenCL FFT?
- 7. OpenCLと複数のビデオカード
- 8. AMD CPUとIntel CPU openCL
- 9. OpenCL偽のビットフィールド
- 10. のOpenCL image2d_tは
- 11. OpenCLのプロセッサアフィニティ
- 12. glAccumと頂点バッファオブジェクト(VBO)のモーションブラーに相当しますか?
- 13. OpenCL、インクルードファイル
- 14. OpenCL - atomic_cmpxchg
- 15. OpenCLグローバルメモリフェッチ
- 16. OpenCL:削減例とメモリオブジェクトの保持/ cudaコードからopenCLへの変換
- 17. openCLカーネルプログラム内の外部ライブラリとのリンク
- 18. LWJGLとのOpenGL/OpenCLの共有
- 19. オブジェクトを「文字バッファオブジェクト」にする
- 20. openclのホストとは何ですか?
- 21. CUDA/openCLとC++ AMPの混乱
- 22. OpenCLでのオーバーラッピング転送とデバイス計算
- 23. OpenCLのTEXとは何ですか?
- 24. のOpenCLカーネル+ ClMagmaアレイ
- 25. OpenCLカーネルの引数
- 26. openclハードウェアのローカルmem
- 27. OpenCLチュートリアルの初歩?
- 28. OpenCL enqueTask vs enqueNDRangeKernel
- 29. openCLプラットフォーム/デバイスクエリ
- 30. OpenCLカーネルエラー-11
リプレイに感謝します。多くのことを学んだだけでなく、どちらがより速く、何パーセントであるかを知りたかった。 – Megharaj
速く、何%であるかには一般的な答えはない。コードがメモリにどのようにアクセスし、どのデバイスを実行するかによって異なります。 –