2017-01-17 6 views
7

OpenCLアプリケーションa.outをNVIDIA TITAN XとCUDA 8.0のシステムでプロファイルしようとしています。CUDA 8.0でOpenCLアプリケーションをプロファイリングする方法nvprof

CUDAアプリケーションの場合は、nvprof ./a.outで十分です。しかし、OpenCLアプリケーションでは、「カーネルがプロファイリングされていませんでした」というメッセージが表示されています。

CUDA 7.5までは、COMPUTE_PROFILE=1の後にthisに首尾よく使用されました。残念ながら、ドキュメントには、「環境変数COMPUTE_PROFILEを使用したコマンドラインプロファイラのサポートは、CUDA 8.0リリースでは廃止されました」と書かれています。

質問は、nvprofでOpenCLアプリケーションをプロファイルするためにCUDAをダウングレードする以外の方法はありますか?

+0

アプリケーション内で 'clReleaseContext 'を呼び出していますか? – talonmies

+0

@talonmiesはい、context、queue、program、kernel、memoryオブジェクトのrelease関数を適切に呼び出します。 – csehydrogen

答えて

4

私の知る限り、nvprofはOpenCLプロファイリングをサポートしていません。

COMPUTE_PROFILE=1のコードを実行すると、nvprofの前にドライバベースのプロファイリングメカニズムが呼び出されます。そのドライバーベースのメカニズムはしばらく前に廃止されましたが、現在はnvprofを使用してCUDA 8で削除されました。

その結果、CUDAツールキットを使用してNVIDIAハードウェア上で動作するOpenCLコードをプロファイリングする方法がないように見えます。

関連する問題