0

おそらく、ここフォーラムでのより簡単で迅速な回答の質問の 1 つです。私はopenCLプロジェクトに取り組んでおり、getEvent()を使用してGPUが画像を処理するのにかかった時間を調べるために、eventIDを取得する方法を見つけようとしています(私は画像に取り組んでいます畳み込み)。これを行う方法を知っている人はいますか?

ありがとう。

4

1 に答える 1

0

clEnqueue で始まるコマンドはいずれも、cl_event を返すことができます (または、より正確には、アドレスで渡す cl_event の内容を埋めることができます)。これは、後でタイミング値を照会できるイベントを作成する一般的な方法です。

したがって、cl_event オブジェクトを宣言し、そのアドレスを最後のパラメーターとして clEnqueueNDRangeKernel に渡します。次に、カーネルの実行が完了したら (clFinish を使用するか、イベントを待機することができます)、cl_event で clGetEventProfilingInfo を呼び出し、CL_PROFILING_COMMAND_START を要求し、次に CL_PROFILING_COMMAND_END を要求します。それらを差し引いて実行時間を取得します。注: これを機能させるには、コマンド キューでプロファイリングを有効にする必要があります (clCreateCommandQueue のプロパティ引数に設定された CL_QUEUE_PROFILING_ENABLE フラグを含める)。

最後に、必ず clReleaseEvent を実行してください。そうしないと、メモリ リークが発生します。

于 2013-01-19T19:50:47.180 に答える