clEnqueueReadBufferRect
提供: Tommy6
cl_int clEnqueueReadBufferRect (cl_command_queue command_queue, cl_mem buffer, cl_bool blocking_read, const size_t buffer_origin[3], const size_t host_origin[3], const size_t region[3], size_t buffer_row_pitch, size_t buffer_slice_pitch, size_t host_row_pitch, size_t host_slice_pitch, void *ptr, cl_uint num_events_in_wait_list, const cl_event *event_wait_list, cl_event *event)
バッファオブジェクトからホストメモリへの、2Dもしくは3Dの矩形領域の読み込みを行うコマンドを挿入します。
パラメータ
- command_queue
- 読み込みコマンドを挿入するコマンドキューを指定します。command_queue と buffer は同じOpenCLコンテキスト上で作成されたものでなければなりません。
- buffer
- 有効なバッファオブジェクトを指定します。
- blocking_read
- 読み込み操作を、ブロッキングで行うのかノンブロッキングで行うのかを指定します。
- blocking_read に CL_TRUE を指定すると、読み込みコマンドはブロッキングとなり、バッファデータを読み込んで ptr が指すメモリ領域に複製し終わるまで、clEnqueueReadBufferRect は返りません。
- blocking_read に CL_FALSE を指定すると、読み込みコマンドはノンブロッキングとなり、clEnqueueReadBufferRect はノンブロッキング読み込みコマンドを挿入して返ります。読み込みコマンドが完了するまで、ptr が指すバッファの内容は利用できません。event 引数にはイベントオブジェクトが返され、読み込みコマンドの実行状況の確認に利用できます。読み込みコマンドが完了すると、ptr が指すバッファの内容をアプリケーションが利用できるようになります。
- buffer_origin
- buffer と関連付けられたメモリ領域の (x, y, z) オフセットを指定します。2D矩形領域では、buffer_origin[2] で指定する z 値は0でなければなりません。オフセットのバイト数は、buffer_origin[2]*buffer_slice_pitch + buffer_origin[1]*buffer_row_pitch + buffer_origin[0] で求められます。
- host_origin
- ptr が指すメモリ領域の (x, y, z) オフセットを指定します。2D矩形領域では、host_origin[2] で指定する z 値は0でなければなりません。オフセットのバイト数は、host_origin[2]*host_slice_pitch + host_origin[1]*host_row_pitch + host_origin[0] で求められます。
- region
- 読み込みを行う2Dもしくは3D矩形領域の (width, height, depth) をバイトで指定します。2D矩形領域では、region[2] で指定する depth 値は1でなければなりません。
- buffer_row_pitch
- buffer と関連付けられたメモリ領域で各行が使用する長さをバイトで指定します。buffer_row_pitch に0を指定すると、region[0] を設定したものとして扱われます。
- buffer_slice_pitch
- buffer と関連付けられたメモリ領域で各2Dスライスが使用する長さをバイトで指定します。buffer_slice_pitch に0を指定すると、region[1]*buffer_row_pitch を設定したものとして扱われます。
- host_row_pitch
- ptr が指すメモリ領域で各行が使用する長さをバイトで指定します。host_row_pitch に0を指定すると、region[0] を設定したものとして扱われます。
- host_slice_pitch
- ptr が指すメモリ領域で各2Dスライスが使用する長さをバイトで指定します。host_slice_pitch に0を指定すると、region[1]*host_row_pitch を設定したものとして扱われます。
- ptr
- 読み込んだデータの保存先となるホストメモリバッファへのポインタを指定します。
- num_events_in_wait_list
- event_wait_list で指定したイベントオブジェクトの数を指定します。
- event_wait_list
- このコマンドが実行される前に完了していなければならないイベントを指定します。event_wait_list が NULL のとき、このコマンドはどのイベントの完了待ちも行いません。event_wait_list が NULL のとき、num_events_in_wait_list は 0 でなければなりません。event_wait_list が NULL ではないとき、event_wait_list が指す各イベントは有効でなければならず、また num_events_in_wait_list は0より大きな値でなければなりません。event_wait_list に指定したイベントは同期点としてふるまいます。event_wait_list 内のイベントと関連付けられたOpenCLコンテキストと command_queue と関連付けられたOpenCLコンテキストは同じでなければなりません。
- event
- この読み込みコマンドを識別するイベントオブジェクトが返され、コマンド完了の確認やコマンド完了待ちを行えます。event が NULL のとき、アプリケーションはコマンドの状況確認やコマンド完了待ちを行えなくなります。
エラー
実行が成功した場合、clEnqueueReadBufferRect は CL_SUCCESS を返します。そうでない場合は以下のエラーのうちひとつを返します。
- CL_INVALID_COMMAND_QUEUE - command_queue が有効なコマンドキューでないとき。
- CL_INVALID_CONTEXT - command_queue と関連付けられたコンテキストと buffer と関連付けられたコンテキストが同じでないとき、あるいは command_queue と関連付けられたコンテキストと event_wait_list 内のイベントと関連付けられたコンテキストが同じでないとき。
- CL_INVALID_MEM_OBJECT - buffer が有効なバッファオブジェクトでないとき。
- CL_INVALID_VALUE - (buffer_origin, region) で指定した読み込み領域が範囲外のとき。あるいは ptr が NULL のとき。
- CL_INVALID_EVENT_WAIT_LIST - event_wait_list が NULL で num_events_in_wait_list が 0 より大きいとき。あるいは event_wait_list が NULL でなく num_events_in_wait_list が 0 のとき。あるいは event_wait_list 内のイベントオブジェクトが有効なものでないとき。
- CL_MISALIGNED_SUB_BUFFER_OFFSET - buffer がサブバッファオブジェクトで、このサブバッファオブジェクトを作成する際に指定したオフセットが command_queue と関連付けられたデバイスの CL_DEVICE_MEM_BASE_ADDR_ALIGN にアラインされていないとき。
- CL_EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST - 読み込みコマンドがブロッキングで、かつ event_wait_list 内のイベントのいずれかの実行状況が負の整数値のとき。
- CL_MEM_OBJECT_ALLOCATION_FAILURE - buffer と関連付けられたデータ保存領域のためのメモリの確保に失敗したとき。
- CL_OUT_OF_RESOURCES - デバイス上でのリソース確保に失敗したとき。
- CL_OUT_OF_HOST_MEMORY - ホスト上でのリソース確保に失敗したとき。
変更記録
- OpenCL 1.1
- 追加
脚注
―――― Version 1.1, The OpenCL Specification
より翻訳