clEnqueueMapBuffer
/clEnqueueMapImage
clEnqueueRead
/を使用する代わりにメモリ オブジェクトにアクセスするための OpenCL メカニズムWrite
。デバイス上のメモリ オブジェクトをホスト上のメモリ領域にマップできます。オブジェクトをマップしたら、好きなように読み書きまたは変更できます。
Read
/ Write
buffer とのもう 1 つの違いclEnqueueMapBuffer
はmap_flags
引数です。map_flags
が に設定されている場合CL_MAP_READ
、マップされたメモリは読み取り専用になりCL_MAP_WRITE
、マップされたメモリが書き込み専用になるように設定されている場合、読み取りと書き込みの両方が必要な場合はフラグを作成しCL_MAP_READ | CL_MAP_WRITE
ます。
読み取り/書き込み fns と比較して、メモリ マッピングには 3 つのステップのプロセスが必要です。
- を使用してメモリをマップします
clEnqueueMapBuffer
。
- 経由でデバイスからホストへ/からメモリを転送します
memcpy
。
- を使用してマップを解除し
clEnqueueUnmapObject
ます。
メモリ マッピングにより、通常の読み取り/書き込みと比較してパフォーマンスが大幅に向上することは、一般的なコンセンサスです。こちらを参照してください: what's fast - AMD devgurus フォーラム リンク
画像または画像の長方形の領域をコピーする場合は、clEnqueueMapImage
呼び出しも利用できます。
参考文献: