GPUについての質問です。


今まではライブラリなんかを使って画像の処理を行っていました。
当然その処理をするために考えてくれるのは今まではCPUだったわけですが、GPUも選択肢として出てきました。
CPUではなく、GPUにさせることによりどの程度の差やメリットが生まれるのでしょうか?
私の頭の中には

・GPUを使うのでCPUのリソースを食わない

といたことは理解できるのですが、
たとえば同じ1GhzのCPUとGPUだとGPUのほうが圧倒的に処理が早いとか(出来ればなぜ早いのか?も)
そういった「CPUのリソースを食わない」以外でのメリットをご教示いただけないでしょうか。

回答の条件
  • 1人2回まで
  • 13歳以上
  • 登録:2011/05/13 08:10:20
  • 終了:2011/05/18 07:54:43

回答(2件)

id:hissssa No.1

hissssa回答回数419ベストアンサー獲得回数1262011/05/13 10:17:15

ポイント35pt

GPUが計算処理する上での最大のメリットは「プログラマブルシェーダ」の存在です。

もともとGPUが目的とするグラフィック処理、特にゲーム等の3Dグラフィックでは、大量の3Dデータを連続処理して画面を作っていきます。この処理をCPUで行っていては非常に効率が悪いため、よく使われる3D座標変換や陰影処理等を計算する専用の計算回路が作られました。これが「シェーダー」と呼ばれる物です。

こういう3D画像処理の大きな特徴は、データ処理の並列化が行いやすいという点です。シェーダー回路を増やせば増やしたぶんだけ性能がどんどん上がりますので、高性能のGPUになると何十個ものシェーダーを搭載したりします。

その後、ゲーム等の3D表現の要求があがるにつれて、このシェーダーの機能が固定だとうまく利用できなくなってきました。そこで、シェーダーの処理を専用言語でプログラムできるようにしたプログラマブルシェーダが現れました。シェーダ自体をプログラムすることにより多彩な表現が可能になったわけです。

このプログラマブルシェーダはそれ自体が1個のCPUのようなもので、本来のCPUほどの汎用性はありませんが大量のデータ処理を高速に行うのに向いた専用回路を持っています。しかも、高級なGPUならこのシェーダを何十個も搭載しているため、画像処理などのデータ処理に限ればCPUの何十倍~何百倍もの速度で計算を行えるわけです。このため、3Dグラフィックに限らず様々な応用が行われるようになってきたわけですね。

http://ja.wikipedia.org/wiki/%E3%82%B7%E3%82%A7%E3%83%BC%E3%83%8...

id:quocard

非常に判りやすく回答いただきありがとうございます。

たしかに物理的な専用回路であれば「ある意味で汎用」のCPUでは確かに性能面では比較にならないかもしれません。

CPUの負荷を気にしなくてもよくなるかもしれないですし、非常に参考になりました。

2011/05/13 21:35:43
id:yoneto164 No.2

ヨネちゃん回答回数813ベストアンサー獲得回数942011/05/13 15:51:17

ポイント35pt

Photoshopの場合はCS4以降がOpenGLに対応していますので、OpenGLに対応したグラフィックボードを搭載し「編集」→「環境設定」→「パフォーマンス」の「OpenGL描画を有効にする」にチェックを入れるすると、プレビューなどの処理速度が格段に速くなります。

http://dc.watch.impress.co.jp/cda/review/2008/12/18/9852.html


同じ1Ghzでも、CPUとGPUではコア数が全く違います。

GPUはリアルタイムで処理することを前提に作られていますので、とにかくコア数が多く、100を超えるコア数のモデルもあり、これが更にマルチスレッドで駆動し、メモリの量によってほぼ無限とも言えるコア数で駆動します。

簡単な計算を沢山しなければならない場合に特化して作られているので、たとえば1000個の計算をする場合は1000個のスレッドを立てて同時に計算を開始します。

性能の悪いPCでも1000台集めればスーパーコンピュータ並みに速くなる原理です。


CPUは処理速度を上げることにより、基本的には1000回の計算を1回ずつ繰り返します。

このほうが複雑な計算にも対応できるのですが、簡単な計算には不向きです。


画像処理の場合、アプリケーションがGPUに対応していない場合も多々ありますのでご注意ください。

id:quocard

回答ありがとうございます。

一人の天才より、たくさんの秀才ってわけではないかもしれませんが似たような作業であれば数が多いほうがたしかに効率はいいですね。

リンク先も非常に参考になりました。

ありがとうございます。

2011/05/13 21:37:03
  • id:Banias
    科学計算などの浮動小数演算に強いです。
    これはGPUに100以上の計算ユニットが搭載されているためです。
    http://www.atmarkit.co.jp/news/200803/06/cuda.html

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません