私は現在、自分よりもはるかに優れたGPUにデプロイされるCUDAアプリケーションを開発しています。別のGPUモデルがある場合、アルゴリズムがそのモデルで実行される速度をどのように見積もることができますか?
2 に答える
いくつかの理由で、あなたは困難な時間を過ごすことになります:
クロックレートとメモリ速度は、コード速度との関係が弱いだけです。これは、ほとんどすべての新しいハードウェアで改善/変更される内部でさらに多くのことが行われているためです(スレッドコンテキストの切り替えなど)。
キャッシュが新しいハードウェア(Fermiなど)に追加されました。キャッシュのヒット/ミス率をモデル化しない限り、これが速度にどのように影響するかを予測するのは困難です。
一般に、浮動小数点のパフォーマンスはモデルに大きく依存します(例:Tesla C2050は、「最上位」のGTX-480よりも優れたパフォーマンスを発揮します)。
デバイスごとのレジスタの使用量はデバイスごとに変わる可能性があり、これもパフォーマンスに影響を与える可能性があります。多くの場合、占有率が影響を受けます。
特定のハードウェアをターゲットにすることでパフォーマンスを向上させることができるため、アルゴリズムがGPUに最適であっても、新しいハードウェアに合わせて最適化すると、パフォーマンスが向上する可能性があります。
そうは言っても、プロファイラーの1つ(NVIDIA Compute Profilerなど)を介してアプリを実行し、占有率とSM使用率を確認すれば、おそらくいくつかの予測を行うことができます。GPUに2つのSMがあり、最終的に実行する1つに16のSMがある場合、ほぼ確実に改善が見られますが、特にそのためではありません。
したがって、残念ながら、必要なタイプの予測を行うのは簡単ではありません。オープンソースを書いている場合は、コードを投稿して、他の人に新しいハードウェアでテストするように依頼することもできますが、それが常にオプションであるとは限りません。
これは、特定のハードウェアの変更を予測するのは非常に難しく、他の人にとっては些細なことです。 検討している2枚のカードの違いを強調します。
たとえば、変更は簡単なものである可能性があります。これらのEVGA水冷式巨獣のいずれかを購入した場合、標準のGTX580よりもパフォーマンスがどれだけ向上するでしょうか。これは、制限クロック速度(メモリまたはGPUクロック)の違いを計算するための演習にすぎません。カードをオーバークロックする必要があるかどうか疑問に思ったときにも、この質問に遭遇しました。
同様のアーキテクチャであるGTX580とTeslaC2070を使用する場合は、クロック速度の違いについて同様のケースを作成できますが、単精度/倍精度の問題に注意する必要があります。
モバイルカード(GTX 240M)から最上位のカード(Tesla C2070)に移行するなど、もっと抜本的なことをしている場合は、パフォーマンスがまったく向上しない可能性があります。
注:クリスの答えは非常に正しいですが、私はこの一般的な作業パスを想定しているため、この注意を強調したいと思います。
ある人は上司に言います:
- だから私はこのCUDAのことについて聞いたことがあります...それは機能
X
をはるかに効率的にすることができると思います。 - 上司は、CUDAをテストするために作業時間の0.05%を費やすことができると言います-ねえ、私たちはすでにこのモバイルカードを持っています、それを使用してください。
- 1年後...CUDAは私たちに3倍のスピードアップをもたらすことができました。それをテストするためにもっと良いカードを購入できますか?(GTX580の費用はたったの$400で、インターンの大失敗よりも安いです...)
- $$を使い、カードを購入すると、CUDAコードの実行速度が低下します。
- あなたの上司は今動揺しています。あなたは時間とお金を無駄にしました。
どうしたの?古いカードで開発すると、8800、9800、または30コアのようなモバイルGTX 2XXでさえ、512コアのカードを効率的に利用する方法とはまったく異なる方法でアルゴリズムを最適化および設計することができます。 警告エンプター あなたはあなたが支払うものを手に入れます-それらの素晴らしいカードは素晴らしいです-しかしあなたのコードはより速く実行されないかもしれません。
警告が発行されました、ウォークアウェイメッセージは何ですか?より優れたカードを入手したら、アルゴリズムの調整、テスト、場合によってはゼロからの再設計に時間を費やしてください。
OK、そうは言っても、経験則?GPUは6か月ごとに2倍の速度になります。したがって、2年前のカードから最上位のカードに移行する場合は、上司に4〜8倍速く実行されると主張してください(16倍の改善が得られれば、ブラボー! !)