Intel:インテル® FPGA SDK for OpenCL™ の環境を利用して、OpenCL™ ホストアプリケーションを作成して検証を行っていますが、OpenCL™ カーネルの処理を繰り返し実行した場合に、回数を重ねる毎に処理性能が低下してしまいます。(1回の OpenCL™ カーネル処理に要する時間が長くなってしまう。)性能低下が発生する原因として、どのような事が考えられるでしょうか?
OpenCL
カテゴリ:OpenCL™
ツール:インテル® FPGA SDK for OpneCL™
デバイス:-
OpenCL™ カーネルを実行する際に、OpenCL™ API:clEnqueueNDRangeKernel を呼び出していると思いますが、この API の引数「cl_event *event」で取得可能なイベントオブジェクトは利用されているでしょうか?
もしイベントオブジェクトを利用されている場合には、OpenCL™ カーネルの実行完了後に OpenCL™ API:clRelaseEvent を呼び出してイベントオブジェクトの解放を行う必要があります。
OpenCL™ の Runtime Environment (RTE) では、clEnqueueNDRangeKernel でイベント・オブジェクトが生成された場合、そのオブジェクトが解放されない限り、すべてのイベントを管理しなければならないというのが OpenCL™ の仕様となっています。
そのため、clReleaseEvent の実行を行っていない場合には、管理すべきイベント数が増え続けてしまい、処理性能の低下に繋がります。