clEnqueueMapBuffer/clEnqueueMapImage
clEnqueueRead/を使用する代わりにメモリ オブジェクトにアクセスするための OpenCL メカニズムWrite。デバイス上のメモリ オブジェクトをホスト上のメモリ領域にマップできます。オブジェクトをマップしたら、好きなように読み書きまたは変更できます。
Read/ Writebuffer とのもう 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呼び出しも利用できます。
参考文献: