4

glsl を使用してビジュアライザーを作成している場合、より多くの GPU を利用できることをどのように保証できますか? 箱から出してすぐに使えるのは 1 枚だけです。ピクセル シェーダーを複数のカードで並行して実行するには、ソフトウェアのどのような手順や設計が必要ですか?

4

2 に答える 2

3

Jarrod の回答のコメントから、あなたが遭遇している「問題」は、ドライバー モードのセットアップの問題である AFR モード (代替フレーム レンダリング) と SFR モード (分割フレーム レンダリング) のように見えます。

AFR モードでは、ドライバーは各フレーム全体を 1 つの GPU に送信し、別のフレームを別の GPU に送信します。これは、フレーム レートの最大化に最も関心があり、フレーム レイテンシはあまり気にしないゲームやアニメーションに最適です。この方法で GPU を使用すると、ほとんど労力をかけずに SLI の 2 倍の fps スピードアップが得られます。ただし、単一のフレームのみを描画している場合 (コメントの場合のように)、1 つの GPU のみを使用します。

SFR モードでは、ドライバーは各フレームを分割し、各 GPU で各フレームの一部をレンダリングします。このモードの問題は、両方の GPU がフレームごとにすべてのセットアップを行う必要があるため、2 倍のスピードアップが得られないことです。実際、高速化されるのはフラグメント シェーダーだけです (各 GPU がフラグメントの半分を実行するため)。したがって、(単一の GPU) レンダリング時間の 50% のみがフラグメント シェーダーである場合、(最高) 33% のスピードアップ。分割のバランスが崩れている可能性があるため、結果が少なくなる可能性があります (そのため、1 つの GPU がほとんどのフラグメントで終了します)。

SFR は一般的に遅いため、AFR がデフォルトになる傾向があります。コントロール パネルから AFR と SFR を制御できます。

于 2012-10-25T18:17:32.220 に答える
3

GLSL ではゼロステップが必要です。SLI/crossfire ドライバーは、ワークロードを GPU 間で分割します。nVidia サラウンドと AMD Eyefinity についても同様です。シェーダーに関する限り、それは単なるより大きなレンダー ターゲットです。

nVidia によるこれらのスライド: OpenGL の SLI、特にスライド「Things Interfering with SLI」を参照してください。

レンダリング ループが正しく設定されている (つまり、SwapBuffers が呼び出されている) こと、および AFR モード SLI に対して少なくともダブル バッファリングされていることを確認する必要があります。

于 2012-10-25T15:50:41.557 に答える