08/05/09 01:41:39 vi8Cd/w9
>>837
ザックリだが読み終えました。GPU処理の最適化について勉強になりました。
CPU-GPU並列処理に関してはあまり触れられていなかったので、波乗りして調べてみた。
(目触りかも知れないけど、後続の為にメモ。OpenGLを例にDirectXも基本同じ)
通常、CPU側からGPU側にパスの数だけglFlush命令を発行するが、
GPUがレンダリングを終えるまで待つことなく、CPUは次の処理を実行できる(と、ここまでは基本)。
つまりCPU-GPU並列を行うには、GPUの処理と並列してCPUで行う処理はglFlushの後に書けばよい。
しかし、近年のシェーダ処理では、1フレームの描画のためにFrame Buffer Object(FBO)を使って
複数パスのレンダリングを行うことが一般になってきており、現実的な次のような問題がある。
まずGPUで行う複数パスの処理セットをG1,G2,・・・とし、それらと並列して行いたいCPU側の処理を
それぞれC1,C2,・・・とする。実行性能を出すにはG1とC1、G2とC2、・・・の計算時間が同じ程度に
なるように調整しなければ、CPUかGPUのどちらが遊んだ状態になる。しかしながら、実際のG1とC1の
計算時間はハードウェアの組み合わせに依存するため、プログラムだけで調整するのは難しい。
結局のところ、CPUとGPUの仕様が確定しているコンシューマ機等でこそ調整できる部分だろう。
以上、駄文でした。おやすみなさい。