OpenCLアプリケーション(特にコンピューティングカーネル)のパフォーマンスを表す最も適切な方法は何ですか? 私はいくつかのアルゴリズムを実装しており、スピードアップと効率のグラフを提示することを考えていましたが、定義によれば、計算で使用したプロセッサの数を知る必要があります。 OpenCLの場合は実行できません。OpenCLパフォーマンス測定
答えて
私は、一部のGPUには正確に時間を測定するハードウェアデバイスがないと信じています。つまり、CPUに戻る必要があるかもしれません。しかし、私は間違っているかもしれません。
私はあなたが望むことをするために言語/ランタイムの機能を活用しているので、ボカロの提案は最もCLに適していると思います。ただし、何らかの理由でプラットフォーム上でうまく動作しない場合は、特定のCL操作のウォールクロック実行時間にのみ関心がある場合は別の解決方法があります。
clFinish()で操作をラップし、システムの最高解像度タイマを使用して経過時間を取得することができます。一例としてのMac OS Xを使用して、このような何か、:
uint64_t start, end;
clFinish(command_queue);
start = mach_absolute_time();
clEnqueueNDRangeKernel(command_queue, /* etc. */);
clFinish(command_queue);
end = mach_absolute_time();
あなたはナノ秒に、この絶対時間に変換するためにApple QA1398の情報を使用することができます。このメソッドは、clEnqueuNDRangeKernelとclFinishのオーバーヘッドを含んでいるため、イベントプロファイリングを使用する場合ほど正確ではありません。
完了の呼び出しは、保留中のCLコマンドが両方とも計算デバイスとに送信されたことを保証します。
nVidiaのベストプラクティスガイドには、パフォーマンス測定に特化した章があります。まもなく、これは次のようになります。外部タイマー(@Jamesの提案)を使用するか、GPUプロファイリングメカニズム(@vocaroの提案)を使用できます。私は個人的にCPUタイマーを使用して簡単にすることに固執していますが、後者はより良い精度を提供する必要があります。私は私が使用するプロセッサの数を直接使用者によって制御される計算
これは、マルチCPUの並列化のために真である、で使用しているどのように多くのプロセッサを知っておく必要があります定義に従って
。これはGPUの場合ではありません.GPUを使用することはできますが、デバイス内のスケジューリングを制御することはできません。 (実際には、私が今までに見たすべてのCPU対GPUチャート上に)「SpeedUp(問題次元)」(「マーケティング」プレゼンテーション用)または「SpeedUp(カーネルオプション)カーネルオプションは、グリッドパラメータまたはいくつかのコードの特殊性であるかもしれません)または "スピードアップ(使用されたGPUの数)"(あなたのプログラムがマルチGPUをサポートしている場合)
- 1. Javaアプリケーションのパフォーマンスを測定
- 2. スパーク:ALSのパフォーマンスを測定
- 3. Androidでのパフォーマンス測定
- 4. VoltDB RDBMSのパフォーマンス測定
- 5. OpenCLパフォーマンスの最適化
- 6. パフォーマンスを測定するiPhoneフレームワーク
- 7. ブラウザレイアウトのパフォーマンスを測定する方法
- 8. ページのパフォーマンスを測定する
- 9. クライアントのパフォーマンスを測定する
- 10. Node.JSサーバーのパフォーマンスの測定と監視
- 11. 豚のパフォーマンスを測定する方法
- 12. アンドロイドアプリのパフォーマンス測定のバラツキの理由
- 13. Pythonのパフォーマンスを測定する
- 14. Webサーバーのパフォーマンスを測定する
- 15. ウェブページのパフォーマンスを測定する
- 16. ストアドプロシージャのパフォーマンスを正確に測定
- 17. ライブラリのパフォーマンスのボトルネックを測定する
- 18. JMeterのパフォーマンス測定 - kibanaダッシュボードのURL
- 19. HttpRequestのパフォーマンスを測定する
- 20. IEでのJavascriptのパフォーマンスの測定
- 21. iPSでCoreGraphicsのパフォーマンスを測定する
- 22. のfloat4 - 積和 - パフォーマンスのヒントOpenCLの
- 23. OpenCL - パフォーマンスへの障壁の影響
- 24. C++の既定のコピーコンストラクタのパフォーマンスを測定する方法
- 25. 分岐予測とパフォーマンス
- 26. OpenCLの設定の設定
- 27. 外部ウェブサイトのパフォーマンスを測定する方法
- 28. .Netアプリケーションのパフォーマンスを測定する方法
- 29. jQueryコードのパフォーマンスを測定する方法
- 30. Javaでのオブジェクト作成のパフォーマンスを測定
私は計算時間のグラフをタスク次元の関数として提示すべきだと思いますか? –
おそらくはい、私はそうだと思いますが(私は完全にはわかりません)。 –