パスワードを忘れた? アカウント作成
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

GTX275」記事へのコメント

  • SP数が32:240でそれにクロック向上分があると10倍は直線的に素直に伸びたということですか。
    GPGPUはデータ転送等の最適化が難しいという評判どおり?

    • Multiprocessor number の比率分は伸びるだろう(伸びてもらわないと困る)と思っていたのですが、ほぼその通りでした。

      8600GTS では、何が遅いと言う以前に、画面のピクセル数分のグリッドを走らせようとするだけで数百ミリ秒を要していました。
      1つのブロック内のスレッド数を32まで減らして、スレッドの中身をほぼ空にしても、です。
      (と言うかその状態だと、スレッドの中身に多少処理を増やしたところで、逆に大した差はありませんでしたが)

      因みに、ブロックあたりのスレッド数を32より少なくしても時間は変わらない一方、ブロックあたりのスレッド数を増やすと比例して遅くなったので(グリッド数は変えていないのでトータルスレッドは増えるので当然)、32スレッドが一単位になっているであろうことを確認できました。
      結論から言うと、8600GTS では、1スレッド1ピクセルで、まとまったピクセル(例えば 16x16 pixel)を1ブロックで処理し、それでグリッドを構成する、但し1スレッドの処理内容は処理性能的にかなり限定的、というのが実情かなと思います。

      レイトレの場合、1 ray に対して全ポリゴンに対する当たり判定が必要で、1ピクセルに32スレッドほどは欲しいので(処理のまとまりやメモリアクセスの連続性などからも)そうしているのですが、8600GTS だと同時に処理できるピクセル数がかなり少なかったのではないかと。

      GTX275 で何とか MMX/SSE コード on Core2Quad 2.66GHz の1コアに近い処理速度が出ているみたいなので、このあとアルゴリズム的な最適化を少し施して様子を見てみたいと思います。
      現状、単純に全ポリゴンに対して当たり判定しているのですが、それをブロックに分けて階層化ですね。
      CPU の処理ではこれがメッシュ単位でやれているのでおおよそ数倍~10倍以上の効果がある(但しメッシュの状態など場合によりけり)のですが、GPU ではどうなることでしょうw
      (因みに現在テストに使っているデータは100ポリ程度なので、この最適化はこのデータではほとんど関係ないレベルだろうと思いますが(32スレッドで数回ループすればOKですから))
      親コメント

未知のハックに一心不乱に取り組んだ結果、私は自然の法則を変えてしまった -- あるハッカー

処理中...