« 浙江大学CAD&CG Labから学部生がやってきました。 | トップページ | メディア学部で研究制作した福島県白河市の地域活性アニメーション動画が公開 »

おもしろメディア学 第66話 エリート部隊 vs 大軍団

|

何か大きな仕事を複数人で成し遂げようと考えたとき、とても優秀な人達による少数精鋭部隊と、大勢の人数による大集団と、どちらの方がより速く終わらせられると言えるでしょうか。

これは、どんな仕事なのかによって変わってきます。例えば、単純に「全員で合計1万字の漢字を書く」という作業であれば、どんなに書くのが速い人が10人いたとしても、その人達がそれぞれ1000字書くことよりも1000人が10字ずつ書く方がずっと速いに決まっています。一方、とても難しい数学の問題を解くことは人数が多ければいいというものではなく、大体は一人の天才的な人によってなされることが多いので、この場合は「集団の中で最も優秀な人」の能力に依存することになります。

このような「適材適所」の考え方は、単純に人による組織だけではなく、パソコンの発展の上でも重要な方針となっています。
パソコンには様々な演算を行う装置が備わっていますが、そのうち最も重要な頭脳が「CPU (Central Processing Unit)」です。CPU こそ、まさに人間でいう「脳」にあたる部位であり、コンピュータの発展とはまさに CPU の発展に他なりません。

この CPU の発展についてなのですが、ある時期までは「動作周波数」を向上することによって計算速度を上げていきました。動作周波数というのは、簡単に言えば「1秒間に行える計算の回数」のことで、これが大きくなればコンピュータの動作が速くなるというのはとても素直な考え方です。しかし、この方針は2000年くらいから頭打ちとなります。理由は、このことにより消費電力量と発熱量が膨大なものとなってしまい、一般的なパソコンに利用できるものではなくなってきてしまったからです。

そこで、CPUメーカー各社は「マルチコア」と呼ばれる戦略にシフトしていきました。これは、一つのパソコン内にCPUを(実質的に)2個以上積むことで、処理を分担することで結果的に速度を向上するという方針です。2000年くらいの時期では、複数のプログラムを同時に動かす、いわゆる「マルチタスク」が当たり前となっていましたので、この方針はある程度は成功しました。しかしながら、ある一つのプログラムが同時に複数のCPUコアを利用するには、それを念頭に置いた高度なプログラミングが必要となるため、単体のアプリケーション動作の速度はあまり向上が見られなくなってしまいました。CPU性能の向上は現在、「コア数の増加」と「一つのコア自体の性能向上」の両面によって行われていっています。

ところで、パソコンには現在 CPU と並んで処理速度に大きく関わる部位があります。それは「GPU (Graphics Processing Unit)」です。この装置は CPU から受け取った図形情報を元に、画面に出力する画像を作成するためのものなのですが、場合によっては CPU よりも高額であることもあります。というのも、この GPU は「演算コアの大軍団」なのです。2014年現在、一般的なパソコンで使われている CPU のコア数は2〜4個が主流です。一方 GPU の場合、そのプロセッサ数は最高スペックだと 2000 個程度にのぼります。

なぜこんなに GPU でコアが多いのかと言いますと、画像を生成するために大量の演算を必要とするからです。例えば現在のモニターとして主流である「フルHD」と呼ばれる解像度では、画素数が 1920*1080 = 2073600 個あります。これらの一つ一つの色を画面更新の度に算出するわけで、1秒間に60回の画面更新をすると想定すると、1秒間で必要な処理回数は1億2千万回以上となります。これらの処理を多くのコアで分担して行う必要があるからです。

そうなると、当然この GPU の各コアを画像出力以外の用途に利用すれば、CPU 以上の高速処理が期待できると考えるのが普通です。しかし、それには大きな問題が一つあります。この GPU のコアは、CPU のコアと比べると一つ一つはあまり頭がよろしくないのです。CPU コアはまさに「エリート集団」であり、とても高度な処理を難なくこなします。一方 GPU コアは「凡人集団」で、あまり高度なことはできず、またちょっと複雑なことをさせるとすぐに速度がとても落ちてしまうというものなのです。

専門家の間では、GPU コアを画面出力以外のことに利用することを「GPGPU (General Purpose computing on GPU) 」と呼んでいます。これは用途によっては絶大な威力を発揮します。私がこれまで CPU だけで書いていたプログラムが、GPGPU を利用すると 100 倍以上も高速になったこともあります。その一方、GPGPU にしてみたらむしろ遅くなってしまったプログラムもあり、その使い分けは難しいものであると感じています。

現在私はこの GPGPU を使って「空間中の発光状態を高速に処理する」といったものや、「集団 AI の高速化」といった研究に取り組んでいます。また、このような技術を容易に利用できるように整備することも同時に行っています。仮想空間内で動いている数千のキャラクターのAIを、実際にプロセッサ一つ一つに割り振っていくということも、今や当たり前の世界となってきました。

(メディア学部 渡辺大地)

おもしろメディア学」カテゴリの記事

« 浙江大学CAD&CG Labから学部生がやってきました。 | トップページ | メディア学部で研究制作した福島県白河市の地域活性アニメーション動画が公開 »