2012-03-28 40 views

答えて

14

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バッファは、画像処理やその他の信号処理に使用されます。 入力画像/信号は読み取り専用として扱うことができます。

+0

リプレイに感謝します。多くのことを学んだだけでなく、どちらがより速く、何パーセントであるかを知りたかった。 – Megharaj

+0

速く、何%であるかには一般的な答えはない。コードがメモリにどのようにアクセスし、どのデバイスを実行するかによって異なります。 –

3

FYIは、OpenCL 2.xから始まり、イメージオブジェクトは読み書き可能です。

関連する問題