1

NP-Complete の問題を解決するために CUDA コードを作成しましたが、パフォーマンスは思ったほどではありませんでした。

「いくつかの」最適化手法について知っています(共有メモリ、テクスチャ、ゼロコピーを使用...)

CUDA プログラマーが知っておくべき最も重要な最適化手法は何ですか?

4

2 に答える 2

5

NVIDIA の CUDA プログラミング ベスト プラクティス ガイドを読む必要があります: http://developer.download.nvidia.com/compute/cuda/3_0/toolkit/docs/NVIDIA_CUDA_BestPracticesGuide.pdf

これには、関連付けられた「優先順位」を持つ複数の異なるパフォーマンスのヒントがあります。最優先のヒントを次に示します。

  1. デバイスの有効な帯域幅を使用して、カーネルのパフォーマンスの上限を決定します
  2. ホストとデバイス間のメモリ転送を最小限に抑えます - デバイス上で効率的でない計算を行うことを意味する場合でも
  3. すべてのメモリ アクセスを結合する
  4. グローバル メモリ アクセスよりも共有メモリ アクセスを優先する
  5. これによりスレッドがシリアル化されるため、1 回のワープ内でのコード実行の分岐を回避します。
于 2010-06-22T07:04:36.467 に答える
2

新しいNVIDIAVisualProfiler(v4.1)は、自動化されたパフォーマンス分析をサポートして、アプリケーションのパフォーマンス向上の機会を特定します。また、検出した問題について、ベストプラクティスガイドの最も役立つセクションに直接リンクしています。また、Visual Profilerは、NVIDIAの開発者向けWebサイト( http://www.nvidia.com/getcuda)のCUDAToolkitの一部として無料で入手できます。

于 2011-12-06T01:25:42.827 に答える