clGetEventProfilingInfo
提供: Tommy6
cl_int clGetEventProfilingInfo (cl_event event, cl_profiling_info param_name, size_t param_value_size, void *param_value, size_t *param_value_size_ret)
event と関連付けられたコマンドのプロファイリング情報を取得します。
この関数で取得した64ビット値を用いて、OpenCLコマンドを実行するのにかかった時間を計測できます。
OpenCLデバイスには、デバイスの周波数や電力状態が変わっても正確に時間を計測できることが求められています。CL_DEVICE_PROFILING_TIMER_RESOLUTION で、タイマーの解像度、つまり、タイマーがインクリメントされるごとに何ナノ秒経過するかを取得できます。
パラメータ
- event
- 有効なイベントオブジェクトを指定します。
- param_name
- 取得する情報を指定します。下記の表にある定数からひとつ選んで指定できます。
- param_value
- 下記の表にしたがって param_name に指定した情報についての値が返されるメモリ空間へのポインタです。NULL の場合は無視されます。
- param_value_size
- param_value が指すメモリのサイズをバイトで指定します。このサイズは、下記の表で示されている戻り値型のサイズ以上でなければなりません。
- param_value_size_ret
- param_value にコピーされるデータの実際のサイズをバイトで返します。NULL の場合は無視されます。
取得できる情報
param_name で指定できる情報およびこれに対応して param_value に返される情報を以下の表に示しています。
1.1 : OpenCL 1.1で追加
cl_profiling_info | 戻り値型 | 解説 |
---|---|---|
CL_PROFILING_COMMAND_QUEUED | cl_ulong | ホストが event と関連付けられたコマンドをコマンドキューに挿入したときのデバイスタイムカウンタの値を64ビット値で返します。 |
CL_PROFILING_COMMAND_SUBMIT | cl_ulong | ホストが event と関連付けられたコマンドをコマンドキューに関連付けられたデバイスに送ったときのデバイスタイムカウンタの値を64ビット値で返します。 |
CL_PROFILING_COMMAND_START | cl_ulong | event と関連付けられたコマンドの実行がデバイス上で始まったときのデバイスタイムカウンタの値を64ビット値で返します。 |
CL_PROFILING_COMMAND_END | cl_ulong | event と関連付けられたコマンドの実行がデバイス上で完了したときのデバイスタイムカウンタの値を64ビット値で返します。 |
エラー
実行が成功した場合、clGetEventProfilingInfo は CL_SUCCESS を返します。そうでない場合は以下のエラーのうちひとつを返します。
- CL_PROFILING_INFO_NOT_AVAILABLE - コマンドキュー に CL_QUEUE_PROFILING_ENABLE フラグが設定されていないとき。あるいは、event と関連付けられたコマンドの実行状態が CL_COMPLETE でないとき。あるいは、event がユーザイベントオブジェクトのとき。
- CL_INVALID_EVENT - event が有効なイベントオブジェクトでないとき。
- CL_INVALID_VALUE - param_name がサポートされている値でない、あるいは、param_value_size で指定されたサイズが上記の表で指定されている戻り値型のサイズより小さくかつ param_value が NULL でないとき。
- CL_OUT_OF_RESOURCES - デバイス上でのリソース確保に失敗したとき。
- CL_OUT_OF_HOST_MEMORY - ホスト上でのリソース確保に失敗したとき。
変更記録
脚注