0

通常の CPU シリアル実行呼び出しの代わりに OpenACC を使用できるかどうかを調べています。通常、私のプログラミングはすべて 3D プログラミングに関するものであるか、通常何らかの方法で GPU を使用します。IE 画像処理、またはシェーダーの使用を必要とするその他のタイプのレンダリング。このライブラリが私に利益をもたらすかどうかを理解しようとしています。

私がこれを尋ねる理由は、3D グラフィックスを (できるだけ速く) レンダリングすると、そのプロセスが遅くなるからですか? または、(理論的には)「高フレームレート」を維持できるかどうか。

もしそうなら、トレードオフは何ですか?CPU でシリアルに実行できる操作を強化するために、3D グラフィックス (表示) のパフォーマンスを犠牲にするつもりはありません。

編集: これは C++ コンテキストです。

4

1 に答える 1

0

私がよく知っている AMD および NVIDIA GPU では、OpenACC プログラムは、シェーダー プログラムによってもある程度使用されるコンピューティング リソースを利用します。GPU には、コンピューティングとグラフィックスの間で共有されていないグラフィックス ハードウェアが他にも多数ありますが、いくつかの共有リソースがあります。同様に、GPU は PCIE によってシステムに接続されている可能性があるため、これは共有リソースまたは競合ポイントを提示することもあります (ただし、最新の Gen3 x16 PCIE の帯域幅をほぼ使い果たすことさえある計算またはグラフィックス プログラムはまれです)。繋がり。)

そのため、グラフィック (または計算) シェーダーと OpenACC アクセラレーションの両方を使用している場合、リソースの競合がある程度発生します。競合のレベル、またはトレードオフは、私が一般化できるものではありません。これは、プログラムの仕様、および計算関数とグラフィック関数の範囲と詳細順序に大きく依存します。

GPU 設計者はこれらのタイプのユースケースを念頭に置いているため、GPU は通常、リソースを競合する可能性のあるさまざまなタスク間の迅速なコンテキスト切り替えに非常に優れています。

于 2014-05-24T23:08:06.037 に答える