1

opengl のシェーダーで過剰な計算を行うのは避けるべきですか?

例: 照明など、フレームごとに計算する必要があるもの。計算を行ってから結果をシェーダーに送信する必要がありますか、それともシェーダーで計算を行うだけですか?

4

1 に答える 1

5

GPU と CPU は議論の大きなトピックであり、@Nicol Bolas が指摘するように、質問は多数の要因が結果に影響を与える一般的な解決策を探しています。

パフォーマンスを考えるとき、プロファイリングに勝るものはありません。人間は、アプリケーションのパフォーマンスへの影響を予測することが非常に苦手です。開発中に突然 GPU バウンドになっていることに気付いた場合は、作業の一部を CPU にオフロードすることをお勧めします。一方、CPU バウンドの場合は、その作業がグラフィックスとは関係なくても、より多くの作業を GPU にオフロードするオプションがある場合があります。おそらく、CPU サイクルを解放するために GPU にできること (特にグラフィックス関連の場合) を与えることから始めたいと思うでしょう。

GPU のプロファイリングについては、 NVIDIAおよびAMD開発者の Web サイトで、または GPU プロファイリングのチュートリアル/ブログ投稿 (このなど) を検索することで、もう少し読むことができます。

GPU は並列処理を念頭に置いて設計されているため、 GPGPUは並列プログラミングの世界で主要な話題になっています。また、 SLIなどのテクノロジを使用して複数の GPU をシステムに追加して、処理をさらに並列化することも珍しくありません。これは、GPU の並列処理を優先するという @Patashu のコメントの原則の 1 つです。さらに詳しく知りたい場合は、人気のある GPU ベースの並列プログラミング プラットフォームであるOpenCLCUDAの 2 つを詳しく調べることができます。

このトピックについては、次の投稿でももう少し詳しく説明しています。

また、他の出版物の中でもGPU gemsシリーズを読むことをお勧めします。ワークロードを分割することで、他の人が得た結果が見つかる可能性があります。

于 2013-03-04T01:09:01.197 に答える