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 の実行を行っていない場合には、管理すべきイベント数が増え続けてしまい、処理性能の低下に繋がります。


経験豊富なFAEが
無料でご相談を承ります。

特定製品の仕様からパーツの選定まで、当社のFAEが皆様のテクニカルなお悩みに無料で回答します。ぜひ、お気軽にご相談ください。