ラスタライズとレイトレーシングに関するいくつかの調査を行った後。私は、インターネット上で利用可能なレイトレーシングのためにCPUがどのように機能するかに関する情報はあまりないことを発見しました。私はPixarと、彼らがCPU上でCars 2をどのようにプリレンダリングしたかについての記事と記事を見つけました。これにより、1フレームあたり11.5時間かかりました。 GPUは同じ画質でこれをより速くレンダリングしませんか? http://gizmodo.com/5813587/12500-cpu-cores-were-required-to-render-cars-2 https://www.engadget.com/2014/10/18/disney-big-hero-6/ http://www.firstshowing.net/2009/michael-bay-presents-transformers-2-facts-and-figures/ 乾杯、 サムGPUではなくレイトレーシングにCPUを使用するのはなぜですか?
答えて
私のようにそこに一度レンダリングソフトウェアアーキテクトでしたが、私は、大規模なVFXと独自のレンダラ(ないピクサーとの長編アニメスタジオでレンダリングソフトウェアアーキテクトの一人ですよく、長く、ずっと前に)。
(すべての大スタジオで、すべての主要レンダリングを使用して)ほとんどすべての高品質レンダリングはCPUのみです。これがなぜそうであるかの理由の束があります。すべてがメモリ内にあるとき
GPUは速いだけ行く:順不同には、本当に魅力的なもののいくつかは、あなたの問題の風味を与えます。最大のGPUカードは何か、それは12GB程度であり、それはすべてを持っていなければならない。。さて、30GBのジオメトリを持つシーンを日常的にレンダリングし、1TB以上のテクスチャを参照しています。それをGPUのメモリに読み込むことはできませんが、文字通り大きすぎる2桁の大きさです。だから、GPUは単に私たちの最大の(あるいは平均的な)シーンに対処できません。
GPUを使ったレイトレーシングは、CPUを上回る明白な勝利ではないと思わないでください。 GPUは非常に一貫性のある作業(一度に多くのデータと同じことをやっている)で素晴らしいです。レイトレースは非常にインコヒーレントです(各レイは異なる方向に行き、異なるオブジェクトを交差させ、異なる材料をシェードし、異なるテクスチャにアクセスします)、このアクセスパターンはGPUパフォーマンスを非常に悪化させます。ごく最近では、GPUレイトレーシングが最高のCPUベースのレイトレーシングコードとマッチすることがありますが、それを上回っていますが、古いコードをすべて破棄してGPU用のバグのある脆弱なコード。そして、最も大きい、最も高価なシーンは、GPUのほんのわずかしか速いシーンではありません。簡単なシーンですばやくたくさんあることは、私たちにとって本当に重要ではありません。
CPUベースのレンダラで50万または100万年の生産強化コードを使用している場合は、それを放棄してから2倍のスピードアップを得るために再起動してください。ソフトウェアエンジニアリングの努力、安定性などは、より重要であり、より大きなコストファクタです。
同様に、あなたのスタジオが2万CPUコアを搭載したデータセンターに投資していれば、できるだけ小さい電力効率と最も熱効率の高いフォームファクタを使用できます。離れて。それらをラインGPUの上位を含む新しいマシンに置き換えると、レンダリングファームのコストが大幅に増加します。これらのレンダリングファームは、より大きく、より多くの熱を発生させるため、文字通り建物に収まらない可能性があります。
Amdahl's Law:実際のレンダリング自体はシーンを生成するための1段階に過ぎず、GPUはそれを手助けしません。シーンをレンダラーに完全に生成して書き出すのに1時間、レンダリングするのに9時間かかるとし、その9時間のうち1時間がテクスチャ、ボリューム、およびその他のデータをディスクから読み込んでいるとします。したがって、ユーザーがレンダリングを経験した合計10時間のうち(最終イメージが完成するまでプッシュボタンを押してください)、8時間はGPUでスピードアップする可能性があります。したがって、GPUがその部分のCPUの10倍の速さであっても、10時間から1 + 1 + 0.8 =ほぼ3時間になります。したがって、10倍のGPUのスピードアップは、実際の3倍のゲインにのみ変換されます。 GPUがレイトレーシングのCPUよりも1,000,000倍高速だった場合でも、1 + 1 + tinyの速度はまだ5倍です。
ゲームの違いは何ですか?なぜGPUはゲームには適していますが、映画には適していませんか?
まず、ゲームをするときにリアルタイムでレンダリングしなければならないことを覚えておいてください。つまり、最も重要な制約は60Hz(またはそれ以上)のフレームレートであり、必要に応じて品質や機能を犠牲にします。それを達成する。対照的に、映画では、監督とVFXの監督者は、自分が望む品質と外観、そしてそれが(ある程度)二次的なものになるまでにどのくらいの時間がかかるのか、満足できる制約があります。
また、ゲームでは、フレーム後のフレームの後にフレームをレンダリングし、すべてのユーザーの前に配置します。しかし映画では、効果的にONCEをレンダリングしています。劇場には映画ファイルがありますので、映画館関係者はフレームごとに10時間かかったかどうかわからないでしょう。また、素晴らしいものを見ている限り、レンダリングに長い時間を費やしてペナルティが少なくなります。
ゲームでは、プレーヤが世界中のどこをさまよっていても、どこからでも見ることができるため、どのフレームをレンダリングするのかは分かりません。あなたはそれを完全にしようとすることはできませんし、そうしようとすべきでもありません。しかし、映画のために、ショットはすべて手作りです!膨大な量の人間の時間は、すべてのショットを合成、アニメーション化、ライティング、合成することになり、その後、一度だけレンダリングする必要があります。経済学について考えてみましょう。カレンダー(と給料)が点灯し、ショットを合成するとすぐに、1時間(または1分)でそれをレンダリングする利点はかなり小さく、価値はありません品質の犠牲または達成可能な複雑さのイメージ。
- 1. なぜCPUとGPUで結果が異なるのですか?
- 2. "clock()"でCPU使用量が過剰になるのはなぜですか?
- 3. GPUとCPU間の明示的な同期は何ですか
- 4. なぜmxnetのGPUのバージョンがCPUのバージョンよりも多くのメモリを必要とするのですか?
- 5. ディープラーニングにGPUが必要なのはなぜですか?
- 6. ノードがCPUの100%を使うのはなぜですか?
- 7. なぜGPUメモリが同じではないのですか?
- 8. JPGではなくPNGを使用するのはなぜですか?
- 9. SQL ServerではなくLocalDBを使用するのはなぜですか?
- 10. NodeJがMysqlではなくMongoDBを使用するのはなぜですか?
- 11. なぜ簡単なハッシュトークンではなくJWTを使用するのですか
- 12. JavaアプリケーションでCPU使用率が高い - なぜですか?
- 13. スレッドのステータスは実行中ですが、CPUを使用しないのはなぜですか?
- 14. include_onceやrequire_onceを使用するのではなく、作者を使用するのはなぜですか?
- 15. tensorflow深いmnist例では、CPU VS GPUを使用して
- 16. .NETはなぜCPUを使用するのですか?これは問題ですか?
- 17. AWS EC2のCPU使用率がIOWaitから瞬間的に100%になるのはなぜですか?
- 18. なぜstaticmethodではなくclassmethodを使用するのですか?
- 19. なぜ '\ n'ではなく '\\ n'を使用するのですか?
- 20. なぜ長いリテラルではなく、Long.valueOf(...)を使用するのですか?
- 21. GPUを使用しないAWSのトレーニングCPU
- 22. なぜ、RESTful HTTPではなく、IoT公開/サブスクライブプロトコルを使用するのはなぜですか?
- 23. トーチリニアモデルフォワードパスGPUでCPUが4倍遅くなった
- 24. KVMのCPUとしてGPUを使用
- 25. なぜこの変換でgpuを利用できないのですか?
- 26. TensorFlowはCPUとGPUを独立して使用します
- 27. PHPでは、なぜ(int)でキャストするのではなく、inval()を使用するのですか?
- 28. CMakeで正しくブーストを使用できないのはなぜですか?
- 29. なぜ64bit CPUでsizeof()が異なるのですか?
- 30. OpenCVをインポートするだけで大量のCPUが使用されるのはなぜですか?
おそらく、彼らはその段階でスピードを気にしません。 – kangshiyin
OPの編集を通じて、その質問をするときに参照する記事へのリンクを提供してください。 – MWiesner
https://en.wikipedia.org/wiki/Ray-tracing_hardwareと、レイトレーシングとラスタライズの記事で、その理由を詳しく説明します。 – pvg