[Giz Explains]GPGPUコンピューティング:顔面吹っ飛ぶ速さの秘密

090519GPGPU-speed_R

「GPGPU」、いや、ドモってないです。

GPGPU(general-purpose computing on graphics processor units/GPUによる汎目的計算)」でOK。Windows 7とSnow Leopardで人気のストリーミングゲームのGPUもぐんと主流になります。このGPUをCPU的に活用するGPGPUの突風にあなたの顔面は耐えられるか!?  速さの秘密を見てみましょう。

 ひと文字の違いが意味するもの

GPUとCPU。音も見た感じもそっくりですが、中身はだいぶ違います。下の写真にある「Radeon HD 4870」(検証12)みたいなGPU特化のものは処理量がすさまじい、というのみならず。

GPUは「graphics processing unit」の略。

CPUは「central processing unit」の略。

ほら、こうして全部スペルするだけでもう7文字も8文字も違う! でも、その奥にある違いの核心のところは、やっぱりNVIDIAとかAMD/ATIから専門家呼んで講釈お願いしないと理解不能ですよね...はい。

昔からGPUがやることは基本的にひとつです。画面で見る画像データの処理速度を上げること。AMD社ストリームコンピューティング部門ディレクターPatricia Harrell氏が僕に話してたように、これはジオメトリパイプライン(画像データあるいはコンピュータモデルを画面のピクセルに合わせるプロセス)を段階ごとに加速するよう開発された、特別な目的のハードウェアのチェーン(連鎖)...なんだそうです。

090519radeon_R

GPUの歴史はかなり古く、その気になりゃコモドール「Amiga」まで遡っちゃえるんですが、ここでは最近...この10年ぐらいの話に絞りましょう。NVIDIA社上級ディレクターSanford Russell氏によると、GPUがコアを追加し、ワークロードを複数のコアに分配しだしたのがその辺りからだというので。やっぱりグラフィックス処理―ゲーム 『Team Fortress 2』で誰かの頭を撃ち飛ばす時、画面に何ピクセルで表示すべきか割り出す計算―は並列で処理するのに特に向いてるってことですね。

伝統的なCPUとGPUの差はこんな風に考えるといい、とNVIDIAのRussell氏が教えてくれた例はこうです。

本1冊からある単語を探すとします。

CPUに任せると1ページ目から最後まで通しで読むんです。何故ならCPUは"serial(連続)"プロセッサだから。速いですよ。でも順番にやるから、そのぶん時間はかかりますよね。一方、GPUは"parallel(並列)"プロセッサなので、"[本を]千個に千切って"、みんな一度に読む。すると単語1個1個の読み取りは遅くても、全部同時に読むので本1冊読み終えるのはもっと速くなります。

090519nvidiascience_R

GPUはコアが山ほどある(例:ATIのRadeon 4870のプロセッサ数は800基)ので、膨大なデータで何度も同じ計算を繰り返し行うのがとっても得意なんですね。それだから、通常、GPUの性能は「FLOPS(floating point operations per second/フロップス:1秒間に浮動小数点数演算が何回できるか)」で測り、ハードはギガフロップスとかテラフロップス測るんです。

汎用CPUの方が得意な処理もあります。AMDのHarrell氏が言うように、一般プログラミング、メモリにランダムにアクセスすること、各ステップを順番に実行すること、毎日の作業、なんかがそれ。ですが今度引退するインテルのクレーグ・バレット会長が対談のとき僕に話してくれたように、最近はCPUもコア、コアで、ますますGPUっぽくなってる面もあります。

高速なのは分かったけど、汎用の部分は?

コアの大集団で手分けして一度に処理する並列処理でネックなのは、この利点が活かせるアプリをプログラムしなきゃいけないこと。これが一筋縄ではいかんのです。だからインテルも現段階ではハードウェアエンジニアよりソフトウェアエンジニアの方を沢山雇ってるんですね。ハードがあってもソフトがないと真価を発揮するところまでは到達できないし、これは全く別種のプログラミングなんです。

プログラミングと言えば忘れちゃならないのがOpenCL(Open Computing Language)やCUDAです。これはグラフィックスカードを格段に使い易くするフレームワーク。と言っても、XBoxの『Left 4 Dead』でゾンビの内臓ぶっ飛ばすのとは関係ない種いの処理に使うグラフィックスカード、ですよ。

OpenCLは「ヘテロジニアス(異種混在)システムの並列プログラミングのオープン化標準」で、クロノスグループによる標準化作業にはAMD、アップル、IBM、インテル、NVIDIA、サムスンその他大勢が関わっており、業界規模の標準と言って良いものです。簡単に言っちゃうと、いろんな種類のハード(CPU使ってるのもGPU使ってるのも)で縦断的に使用できる並列プログラミングのクロスプラットフォーム標準で、これは誰でも利用無料です。

後者のCUDAはNVIDIAのグラフィックスカードの並列プログラミングに使うNVIDIA独自のGPGPU専用統合開発環境

OpenCLはSnow Leopardの目玉ですし、Windows 7もグラフィックスカード・アクセレレーションは何か採用するようです(僕らの期待はDirectX 11)。これからのOSでは、グラフィックスカード・アクセレレーションが大きな役割りを果たす、ということですねー。

で? 僕になんか得なことあるの?

090519telsadiagram_R

並列コンピューティングはなるほど研究者にとっては大きな進歩ですけど、普通の人にとってはどうなんでしょう? 僕らが使うものまで速くなる?

これは全部が全部速くなるわけじゃないようです。グラフィックスから著しく逸脱はしなさそう。というのも、並列化が一番簡単なのは依然グラフィックスですからね。ただ、みなさん数年前よりたぶん今の方が頻繁に使ってる変換、デコード、動画作成なども間もなく格段に改善しますよ。

バイバイ、レンダリング20分の世界。

バイバイ、のろまなイメージ編集よ。(大きな画像もエフェクト浸透までの待ち時間が減ります。あのPhotoshop CS4も既にGPUアクセレレーション使ってますよ)

ゲームの世界では、ストレートにグラフィックス改善が見られるだけじゃなく、物理エンジン(physics engine)ももっと複雑でリアルなものになりそうです。

「Twitterとメールぐらいしか使わないなあ...」という冷たい地蔵のような人はGPGPUの突風を浴びせてもビクともしないでしょうけど、コンピュータ使っていろんなクールなことしてる人には顔がぐわんぐわん歪むほどの突風が、いずれやってきますよ。

関連:GPGPU - Wikipedia日本版SIGGRAPH 2005 - GPUをCPU的に活用するGPGPUの可能性(←おすすめ)

matt buchanan(原文/訳:satomi)

【関連記事】

NVIDIAのGeForce 9800 GX2レビュー(判定:Radeon HD 3870 X2には完勝だけど...)

Mac OS 10.6 Snow Leopard初お披露目、出荷は約1年後

NVIDIA、超ハイエンドのフィルム編集用グラフィクスカードFX 5600など発売

インテルのバレット会長が語るパラノイア、Coreブーム、ギガヘルツの終焉

NVIDIAのION採用「AspireREVO」は、超ちっちゃかった!