5

一般的なシングル プロセッサ コアと比較して、CUDA または OpenCL コードのアルゴリズムはどれくらい高速に実行できますか? (アルゴリズムは、CPU と GPU の両方のターゲットに対して記述および最適化されていることを考慮してください)。

グラフィックカードとCPUの両方に依存することは知っていますが、NVIDIAの最速GPUの1つと(シングルコアの)Intel i7プロセッサと言ってください。

また、アルゴリズムの種類にも依存することを知っています。

厳密な回答は必要ありませんが、経験豊富な例:倍精度浮動小数点を使用する画像操作アルゴリズムの場合、ピクセルあたり 10 回の操作で最初の 5 分かかり、このハードウェアを使用すると x 秒で実行されます。

4

7 に答える 7

10

あなたの質問は範囲が広すぎて、答えるのが非常に難しいです。さらに、GPU で実現可能なアルゴリズム (共有状態をあまり扱わないアルゴリズム) はごくわずかです。

しかし、主張については批判的になるようお願いしたい。私は画像処理に携わっており、このテーマに関する記事をたくさん読んでいますが、GPU の場合、入力データを GPU にアップロードし、結果をメイン メモリにダウンロードする時間が係数の計算に含まれていないことがよくあります。 .

これが問題にならないケースもいくつかありますが (どちらも小さいか、結果のサイズをさらに縮小する第 2 段階の計算がある)、通常は結果と初期データを転送する必要があります。

アップロード/ダウンロード時間だけでも、メイン CPU が計算に必要とする時間よりも長いため、主張されたプラスがマイナスに変わるのを見てきました。

異なる GPU カードの結果を組み合わせる場合も、ほとんど同じことが当てはまります。

更新新しい GPU は、ピンポン バッファを使用してアップロード/ダウンロードと計算を同時に実行できるようです。しかし、国境の状況を徹底的にチェックするようにというアドバイスは依然として有効です。そこにはたくさんのスピンがあります。

于 2010-11-24T15:12:18.920 に答える
1

あなたの質問は一般的に、答えるのが難しいです。さまざまな変数があり、正確または公正な答えを出すのが難しくなっています。

特に、1) アルゴリズムの選択、2) ハードウェアの相対的なパフォーマンス、3) コンパイラの最適化能力、4) 実装言語の選択、および 5) アルゴリズム実装の効率の両方を同時に比較しています...

たとえば、GPU と CPU では異なるアルゴリズムが望ましい場合があることに注意してください。また、GPU との間のデータ転送もタイミングで考慮する必要があります。

AMD には、CPU および GPU で実行される OpenCL コードの OpenCL パフォーマンスに関するケース スタディ (実際にはいくつか) があります。これは、疎行列ベクトル乗算のパフォーマンス結果を示したものです

于 2010-11-24T15:10:27.997 に答える
1

このOpenCL の紹介ビデオは、第 1 話または第 2 話での質問に対する適切な回答になると思います (覚えていません)。1話の最後だったと思いますが…

一般に、問題をどれだけうまく「並列化」できるかによって異なります。データをグラフィックス カードにコピーするには時間がかかるため、問題のサイズ自体も要因の 1 つです。

于 2010-11-24T15:06:50.883 に答える
1

それは、アルゴリズムと実装の効率性に大きく依存します。

全体として、GPU は CPU よりも計算が優れていると言っても過言ではありません。したがって、上限は、トップ エンド GPU の理論上の GFlops レーティングをトップ エンド CPU で除算することです。理論上のメモリ帯域幅についても同様の計算を行うことができます。

たとえば、GTX580 では 1581.1 GFlops、i7 980XE では 107.55 GFLOPS です。GTX580 の定格は単精度であることに注意してください。テスラ以外の Fermi クラスで 2 倍の精度評価を得るには、それを 4 分の 1 に削減する必要があると思います。したがって、この例では、およそ 4 倍になると予想できます。

より良い結果が得られる理由についての警告 (または、はるかに高速化されたと主張する結果を参照):

  1. GPU は、データがカードに格納されると、CPU よりも優れたメモリ帯域幅を備えています。場合によっては、メモリ バウンド アルゴリズムが GPU でうまく機能することがあります。

  2. キャッシュ (テクスチャ メモリなど) を巧みに使用することで、宣伝されている帯域幅よりも優れたパフォーマンスを実現できます。

  3. マルコが言うように、乗り継ぎ時間は含まれていません。私は個人的に常にそのような時間を作業に含めているため、すべてのデータが GPU に収まる反復アルゴリズムで最大の高速化が見られることがわかりました (個人的にはミッドレンジ CPU からミッドレンジ GPU で 300 倍以上を得ました)。 )。

  4. リンゴとオレンジの比較。トップエンドの GPU とローエンドの CPU を比較することは、本質的に不公平です。反論として、ハイエンド CPU はハイエンド GPU よりもはるかにコストがかかります。GFlops/$ または GFlops/Watt を比較すると、GPU にとってより有利に見える場合があります。

于 2011-02-28T15:50:50.563 に答える
0

オークリッジ国立研究所とジョージア工科大学のSHOC(Scalable Heterogeneous Computing)と呼ばれる新しいベンチマークスイートには、多くの重要なカーネルのOpenCLとCUDAの両方の実装があります。スイートはhttp://bit.ly/shocmarxからダウンロードできます。楽しみ。

于 2010-11-24T20:52:40.463 に答える
0

2 倍から 400 倍の数値を見てきました。また、ミドルレンジの GPU は、倍精度計算でハイレンジの CPU と競合できないことも知っています。8 コア Xeon の MKL は、300 ドルの GPU の CULA や CUBLAS よりも高速です。

OpenCL は、CUDA よりもはるかに遅いという逸話があります。

于 2010-11-24T15:04:51.920 に答える