パスワードを忘れた? アカウント作成
10791 story

GPGPU - GPUでプログラミング 50

ストーリー by yoosee
プログラミング言語はハードウェアの進化を乗りこなせるか 部門より

chiba-f 曰く、 "近年GPUの演算性能はCPUを上回り,その進歩の勢いは当分続きそうです.これを利用しない手はないと,GPUをCPUのように汎用目的で使おうと言うGPGPU (General Purpose GPU)なる動きが現れています.また,SIGGRAPH 2005ではこのGPGPUに特化したセッションが設けられました.MYCOM PC WEBには,このGPGPUについての解説とSIGGRAPH 2005のセッションを伝えるレポート「SIGGRAPH 2005 - GPUをCPU的に活用するGPGPUの可能性」が掲載されています.

現在,用途としてはGPUの特性から,(1) 巨大なデータを処理する,(2)各データ間の依存性は最低限である,(3)高い並列性をもって処理できる,と言った特質を持ったアプリケーションが考えられるそうです.GPUが汎用的に利用されるためにはそのためのプログラミング言語が必要ですが,CPUとは違ったアーキテクチャと言うことで,その実装は大変のようです."

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by Anonymous Coward on 2005年09月07日 8時16分 (#794751)
    一番最初に作るサンプルプログラムは、
    ポリゴンで描かれた"Hello World!"を表示させる
    とかになるのでしょうか?
  • by calc (16044) on 2005年09月07日 9時50分 (#794799) ホームページ 日記
    GPU向けに最適化してくれるコンパイラでしょ。

    スパコンの場合、コンパイラがfor文の並列性を解析して勝手に並列化してくれるので、プログラマは普通にプログラムを書いて、その後で最適化を妨げる書き方をしていればそれを書き換える、というのが一般的な手順でした。
    この方式だとプロセッサに関する専門知識を(あまり)要求されないのでプログラマの負担が少なくて済みます。

    難点は(スパコン用の)並列化をしてくれるコンパイラはたいていの場合とっても高価だった、ってことかw
    #あるいはカリカリに最適化してくれるコンパイラは大抵商用でそれなりの値段がするというのはもう過去の話?
    • 最適化 (スコア:2, 参考になる)

      by mnr (22000) on 2005年09月07日 10時46分 (#794836)
      > GPU向けに最適化してくれるコンパイラでしょ。

      最適化というのは要するにアーキテクチャの選択であるわけです。
      その最適化するというのがコンパイラであるとは限りません。
      ハードウェアが最適化するというアーキテクチャの種類もあります。
      コンパイラ側がするのがVLIWというもので、ハードウェアが
      するものがスーパスカラというものです。確かIntelの路線は
      スーパスカラだったと思います。

      ですから、必ずしもコンパイラが最適化を図るというわけでは
      ありませんよ。まあ、GPUがVLIWかスーパスカラのどちらの
      路線かは分かりませんけれども。
      親コメント
    • > この方式だとプロセッサに関する専門知識を(あまり)要求されないのでプログラマの負担が少なくて済みます。

      より重要なのは特定のプロセッサへの依存性が低くなって他のプロセッサへ移植しやすくなることではないでしょうか。
      GPU(というより汎用ベクタプロセッサ)のアーキテクチャが標準化されるとも思えないので囲い込みはない方が良いと思う。
    • 正常なGPU は小さい間違いを作る。これらは目に見える下の正常な使用でないので、グラフィックのために重要でない(グラフィックとして) 。 しかし計算機プログラムのために、単一の間違いは論理を破壊できる。そうGPU はマイナーな間違いを作るので適していない。 当然、これは興味深い考えまだである。
      • # 自動翻訳ですか?

        >正常なGPU は小さい間違いを作る。
        が真なら興味深い意見です。

        しかし、本当ですか?
        それをディスプレイに出力する過程では、ビット単位の正確性はもしかしたら求められないのかもしれない、という
  • by WindKnight (1253) on 2005年09月07日 11時45分 (#794867) 日記
    GPU というのは、過去のしがらみにとらわれず、結果オーライで性能
    を上げてきたわけだが、こういう形で利用されると、しがらみが発生
    してしまうやうな気がする。

    コンパイラやトランスレータで、急速に変化しつづけるアーキテク
    チャーをどこまでカバーできるだらふか?
    • GeForceなんかで、DirectXの内部処理パイプラインを
      そのまま代替するハードをまるごと作り込むことでアクセラレーションを
      行っているのがありましたが、もしかするとMicrosoftの策定する仕様が
      GPUのアーキテクチャと命令セットを規定するという方向になるのかもしれません。
      親コメント
    • GPGPUが主要なデータ処理技法として一般化してくれれば
      GPUがしがらみを背負うというかMPU同様に互換性の問題を抱える。
      GPUの互換性問題を解決するためにトランスレータ技術が発達。
      トランスレータ技術が十分に熟成した時点でMPU向けに転用。
      MPUも過去のしがらみから開放されてGPUと同程度には性能向上。
      GPU/MPUに限らずとりあえず汎用性が見込めるナントカプロセッサ多数搭載のマルチプロセッサ構成でPC全体の処理速度が飛躍的に向上。

      というのが理想的な気がするんだけど、そういう方向に進まない気がするのは何故だろう?
      親コメント
      • by Anonymous Coward on 2005年09月07日 16時46分 (#795022)
        現在のHLSLなどでは、実行ファイルにシェーダーのソースを直接抱えて、
        実行するときにコンパイルできます。
        したがって、これを応用すればソース一本であとはコンパイラ任せが出来る。
        なので、ハードウェアが勝手に進化してもついて行ける(はず
        親コメント
  • by Anonymous Coward on 2005年09月07日 8時11分 (#794748)

    そこで我々は一足先を行くPPU [srad.jp]での汎用処理ですよ。

    まぁ、それはともかく、GPUを汎用処理に使うって発想は前々からちょくちょくありましたよね。何年か前ににnVidiaが処理言語を発表した時にも、「これじゃあCPUと変わらんねえ」なんてコメントが付いたのを思い出しましたよ。

  • by lunatic_sparc (15416) on 2005年09月07日 17時19分 (#795036)
    GPU って名前じゃなかったけど、、、

    FM シリーズで遊んでた人にはサブCPU までしゃぶり尽くすってのは普通だったような。"YAMAUCHI"コマンドとかね。:)

    あと、メガドライブなんかでもそんなのあったような気がするんですが。。。(覚えてる人います?)

    #もとFM-11 ユーザ
    • by taka2 (14791) on 2005年09月07日 19時55分 (#795113) ホームページ 日記
      メガCDのシルフィードなんかは、メガCD側の68000も酷使しているという話ですね。

      あと、FDD内蔵型のPC-8801(mkII以降)は、FDD制御用のサブCPU(Z-80)があります。
      で、PC-88版のシルフィードも、このサブCPUを酷使してました。

      というわけで、GPGPUの力を見るにはゲームアーツに
      ゲームを作ってもらうのがいいのではないかと思ってみたり…
      親コメント
      • by Anonymous Coward
        >あと、FDD内蔵型のPC-8801(mkII以降)は、FDD制御用のサブCPU(Z-80)があります。

        FDC制御用のZ80互換CPUでしょ?

        >で、PC-88版のシルフィードも、このサブCPUを酷使してました。

        ファイルシステムの管理ぐらいじゃなかったっけ? あとなんかに使ってた?
        • > FDC制御用のZ80互換CPUでしょ?
          本物のZ80じゃなくて互換品なのはその通りですが、
          「FDCを通して、FDDを制御するためのCPU」ですから、「FDD制御用」と言っても間違いじゃないでしょう。

          メインCPU(NEC μPD780C-1 = Zilog Z80A 非正規互換品) -[CPUバス]- パラレルインターフェース(μPD8255 = Intel 8255互換品)
             -[パラレル通信]- パラレルインターフェース(μPD8255) -[CPUバス]- サブCPU(μPD780C-1)
               -[CPUバス]- FDC(μPD765 これはNECオリジナル) -- FDD
          って形ですね。
          元々、パラレルポートを経由して接続していた外付けFDDをまるごと内蔵させたものだから、
          こんな複雑な構成になっちゃったと。

          > ファイルシステムの管理ぐらいじゃなかったっけ? あとなんかに使ってた?

          もう20年ぐらい前に雑誌か何かで読んだ、うろ覚えな記憶ですが、
          たしか、シルフィードはFD上にはデータを圧縮したものが記録されていて、
          それをサブCPUで展開してからメインCPUに渡していたと思います。
          親コメント
          • by Anonymous Coward
            >もう20年ぐらい前に雑誌か何かで読んだ、うろ覚えな記憶ですが、
            >たしか、シルフィードはFD上にはデータを圧縮したものが記録されていて、
            >それをサブCPUで展開してからメインCPUに渡していたと思います
            • by Anonymous Coward
              >随分小さくなった覚えがあるんだけど、あれで圧縮された内容だっ
              >たんだろうか?

              その利用法だとリアルタイムに圧縮してあるものを伸張するのですが、
              当時のプロセッサにはLZHで利用している圧縮法は十分重い処理でしたし、
              利用できた作業用メモリがどれだけあったかは
              • by Anonymous Coward
                「高速・コンパクトで圧縮率がそこそこ」というとRLとかLZとかが思いつきますが、8801はSUB→MAINのデータ転送が結構重いので伸張後のデータを転送するのはあんまりいい方法じゃないと思います。
    • by Anonymous Coward
      >あと、メガドライブなんかでもそんなのあったような気がするんですが。。。(覚えてる人います?)

      サウンド用のZ80ですか?
      メーンの68Kに比べて非力ですし、あんまサウンド以外のことやらせてもメリットは少ないような気がしますが。
    • by Anonymous Coward
      PC-88かなにかのFDドライブ制御用CPUを使って云々もあったような
  • 追加リンク (スコア:2, 参考になる)

    by chiba-f (6867) on 2005年09月08日 0時45分 (#795343)
    以前少し調べてメモしてたことを書きます.(中身は読んでないので,解説は抜きです.):

    GPUを汎用的に使おうと言う話が結構あると言うことは以下の記事で知りました:
    5年後に“GPUスパコン”の時代がやってくる!? --- 後藤弘茂のWeekly海外ニュース [impress.co.jp](2003年12月26日)

    去年開かれた最初のGPGPUのワークショップの記録です.この時点では名称はGP2(GPGP)でした:
    ACM Workshop on General Purpose Computing on Graphics Processors [unc.edu]

    実際にGPUやGPUベースのクラスタ(!)で計算している人たちがいます:
    General-Purpose Computation on GPUs or a GPU Cluster [sunysb.edu](Visualization Lab at Stony Brook University)

    URLは書きませんが,GPGPUのメーリングリストもあるようです.名称はGpgpu Info Page.

    nVIDIAのGPGPUのページ:
    GPGPU: Beyond Graphics [nvidia.com]


    ##お読みになって下さった方々へ.タレコミの文章がのたくっていて,済みませんでした.
  • by Anonymous Coward on 2005年09月07日 11時50分 (#794871)
    Quartz Composer [mycom.co.jp]なんかもその流れの一端ですかね?
    • Re:Quartz Composer (スコア:1, 参考になる)

      by Anonymous Coward on 2005年09月07日 15時11分 (#794989)
      Quartz Composer自身は面白いですがオフトピですね。
      ただ、Quartz Composerも利用しているCore Imageという技術のなかに本トピックに関する技術があります。
      親コメント
    • by Anonymous Coward
      Quartz Compositorと勘違いしているような気が。

      Quartz Compositorの機能をGPUにやらせるのがQuartz Extremeで、いっそもう描画全てをプログラマブルなGPUにやらせてしまえというのがQuartz 2D Extremeです。

      http://arstechnica.com/reviews/os/macosx-10.4.ars/14
  • by Anonymous Coward on 2005年09月07日 17時25分 (#795037)
    あれにAT&TのDSPが載ってて、Photoshopの高速化に使ってましたね
  • by Anonymous Coward on 2005年09月07日 21時31分 (#795193)
    なんでGPUなの?
    Cell使えばいいじゃん。
    こっちの方がよっぽどプログラムするの楽じゃない?
    • by WindKnight (1253) on 2005年09月08日 11時37分 (#795656) 日記
      ここでの用途向きに、本気でコアに取り込もうというのなら、SPE では力不足だと思ふ。

      GPU にしても、廉価だから使うという面があるし。

      本来なら、倍精度を高速でこなせるものが望まれているはず。

      こういうサブユニットを積んだ MPU を作りませんか?> Intel or AMD
      親コメント
    • by Anonymous Coward
      GPUは程度はばらばらでもどのPCにも付いてるでしょう?
      そしてCellはついてないでしょう?
      Cell増設して専用処理するくらいならCellなワークステーションを作ってもらったほうがましでしょう?
      • by Anonymous Coward
        CELLをGPUにしてしまえばよし。
        3DがいらないときはエンコProcessorとして働けるし。
        #むしろ、後者に期待しているけど
        • by Anonymous Coward
          思ったより性能が伸びずnVidiaに力を借りる羽目になったPS3のCellのことを考えるとそれはかなり難しい気がする。
          • by keisuken (2614) on 2005年09月08日 13時51分 (#795808) ホームページ 日記
            (開発者サイドからも)そう思われていたようですが,後からCellのみでレンダリングされたデモが発表されたりして,一概にそうとも言い切れないところがあります(もちろんGPUより遅いと思いますが).たぶん主な原因はソフトウェア的にCellを使いこなせてなかったからだと思います.
            私はCellをPPUの変わりに使うという発想の方が素直だと考えていますが,それでも近代的なPCには高速で高度なGPUが積まれていることを考えると悪い発想ではないかなと思います.
            アプリケーションとしては,画像・音声関係の解析・エンコード・デコードなどがキラーアプリケーションになるかなぁと思ってます.
            親コメント
  • by Anonymous Coward on 2005年09月08日 0時26分 (#795333)
    ひっじょうに下らない質問で申し訳ないんですけど、
    これ、なんて読んだらいいんですかね?
    • by Anonymous Coward
      その前に、あなたがCPUをどのように読んでいるのか、それをおたずねしたい。
      「くぷぅ」?
typodupeerror

あと、僕は馬鹿なことをするのは嫌いですよ (わざとやるとき以外は)。-- Larry Wall

読み込み中...