0

あいまいなタイトルで申し訳ありません。

3D 熱伝達でいくつかのシミュレーションを行うためのカーネルを作成しました。私が抱えている問題は、8 コアの Dell Studio XPS で並列に実行されているプログラムのバージョンが GTS-240 GPU を上回っていることです。より速く実行するために多くのことを試みましたが、計算自体が大きすぎるという結論に達しました。計算には約 35 FLOP があり、シミュレーションでセルごとにスレッドを起動するだけです。それでも、GPU では約 3,340 万セル/秒、CPU では 4,040 万/秒しか得られません。GPU は、タイム ステップごとに 170 万個のセルがあり、それぞれでこの計算を行う必要があるこのようなタスクに優れていることを理解していました。

また、計算ごとに 28 の配列アクセスがあり、すべて通常の GPU メモリにあります。

これが計算です。私は本物を投稿しません - それはトップシークレットではなく、単に不必要です. 「f」で始まる変数は浮動小数点数で、「i」は整数を意味します。

f_celldata[iA] =(-f_constA[iA-iB] * (f_mutA[iA] - f_mutA[iA-iB]) / f_constB[iA-1] + 
                  f_constA[iA]    * (f_mutA[iA+iB] - f_mutA[iA]) / f_constB[iA]) * (1.0 / f_constB[iA]) + 
                 (-f_constA[iA-iC] * (f_mutA[iA] - f_mutA[iA-iC]) / f_constB[iA-1] + 
                   f_mutA[iA] * (f_constA[iA+*iC] - kern_T_mat[linOffset]) / kern_dy_e[y]) * (1.0  /kern_dy_c[y]) + 
                  (-f_constA[iA-1] * (f_mutA[iA] - f_mutA[iA-1]) / f_constB[iA-1] + 
                    f_constA[iA] * (f_mutA[iA+1] - f_mutA[iA]) / f_constB[iA]) * (1.0 / f_constB[iA]);

明らかに、ここにこれを書き留めたとき、私はちょっとずさんになりました。実際には、計算は可能な限り単純であり、ここでは簡単にするために同じ変数を作成しました。

GPU プログラミングの経験が豊富な人が私にアドバイスをくれることを期待していました。計算が大きすぎて GPU で処理できませんか? 1 回の計算だけで (配列アクセスと FLOP を一緒に)、時間ステップごとに 35 ミリ秒かかります。これは多かれ少なかれ典型的ですか?どうすればもっと速くできるか本当にわかりません。テスラを使えば、仕事はずっと速くなるでしょうか? どれくらい速くなりますか?

ありがとうございました。

4

4 に答える 4

2

いいえ、GPU は大規模な計算を行う能力に制限はありません。

実際のコードを見ないとわかりません。あなたが提供したサンプルで明らかに間違っているのは、1.0/x の部分だけです。"1.0" は倍精度であり、NVIDIA GPU の倍精度浮動小数点のパフォーマンスは単精度よりもはるかに低くなります。さらに、GTS 240 でコンパイルすることもできません。これは計算能力 1.1 であり、倍精度をまったくサポートしていないためです。

いずれにせよ、表示されるパフォーマンスは、ほぼ確実にグローバル メモリのボトルネックによるものです。200 シリーズには優れたキャッシュ機能がなく、メモリ アクセスを最適化するために特別な手段を講じる必要がありました。コードのメモリ アクセス パターンを理解し、グローバル メモリ アクセスを最小限に抑える必要があります。

于 2012-06-08T23:23:47.040 に答える
0

フェルミ メモリ アーキテクチャ

@tskuzzy が投稿したメモリ ダイアグラムの代替として、Nsight プロファイラーからこれを取得しました。Fermi のメモリ アーキテクチャの概要を示します。これには、各タイプの命令をサポートするメモリ空間 (カーネルに最も近い行) が含まれます。

于 2012-06-08T21:48:39.953 に答える
0

GPU にはメモリ階層があります。IO 帯域幅がボトルネックになっているように見えるため、メモリ アクセスができるだけ高速であることを確認したいと考えています。

空間的局所性とキャッシングを改善するために、テクスチャ メモリを調べることをお勧めします。

ここに画像の説明を入力

于 2012-06-08T20:04:00.767 に答える