新語・難語解説~GPU

GPUのCPUとの違い

GPUとは、Graphics Processing Unitの略で「画像処理装置」のことです。一方、私たちがこれまでよく聞いてきたCPUはCentral Processing Unitの略で「中央処理(演算)装置」といいます。名称としてはほぼ「画像」か「中央」か、という違いしかありません。とてもざっくり表現すると、GPUは画像処理に特化している装置、CPUはなんでもできる司令塔のような装置です。

ただし、両者の特性の違いについてもう少し深く把握していた方がGPUの実情を正しく理解できますので、さらに詳しく説明していきます。

私たちは、コンピュータにさまざまなタスクを任せています。それは「AとBを足し算しろ」というようなシンプルな計算ばかりではなく、「Aの計算をしたらBの計算をして、結果によってCやDの計算をする」といった複雑な処理です。

そのためコンピュータの頭脳であるCPUの処理は「連続的な演算処理」に最適化されています。どんなに複雑な計算でも「分割して順番に計算をする」という形に落とし込めれば、CPUは瞬時に解けるのです。CPUの中にある「コア」と呼ばれる計算ユニットの能力は高く、難しい計算でも瞬時に答えを出します。

CPUは1つひとつのタスクを順番にこなしていくのですが、ここで1つ問題があります。複雑な作業も簡単な作業も同じ1つのタスクとして捉えてしまうのです。しかも、往々にして単純作業というのは数が多くなりがちです。

こうした膨大な単純作業を全てCPUに任せるというのは、社長に全社員の交通費計算をさせるようなものです。交通費の計算をしている間にさまざまな決済が滞ってはいけませんから、通常は経理部門を作ってそこに作業を任せるでしょう。

同じことがCPUとGPUの関係に言えます。というのも、GPUが専門とする「画像処理」は膨大な単純作業の塊なのです。たとえば三角形を画面に表示するだけでも、下図のようにコンピュータはかなりの計算を行った上で画面に表示しています。

画像

グラフィックス処理の流れ

これは何をしているかというと、三角形を表示する上で「ディスプレイのどの部分に何の色をつけるか」確認しているのです。視覚的には、三角形をマス目の上に描いて、マス目の上を通った線の位置をみて、マス目のどの部分にどの色を付けるかを1つひとつ計算しながら決めていくだけの作業です。

ここでポイントとなるのは、この作業を順番にやる必要はないということです。1つひとつのピクセルごとに独立して計算すればよいのです。

しかも計算も複雑ではないので、CPUに搭載されている高性能の「コア」は必要ありません。CPUのコアが「数学者」なら、このコアは「中学生」ぐらいの、より計算能力の低いシンプルな「コア」で構わないのです。

そこでシンプルなコアを大量に集め、簡単な計算を分担して素早く計算できるようにしたもの。それが「GPU」です。CPUが少数精鋭で計算をしている間に、GPUは人海戦術で一気に計算を進めてしまうのです。特に「膨大な単純作業」を瞬時に行う必要がある画像処理では、力を発揮します。CPUが数個のコアで計算して進める作業をGPUでは数千個のコアで行うわけで、単純作業に限れば処理速度の差は歴然です。

汎用性を高めたGPGPU

GPUが画像処理に特化している理由を理解したところで、よりGPUの汎用性を高めた「GPGPU(General Purpose computing on Graphics Processing Units)」についても解説しましょう。

GPUは画像処理に特化していますが、よく考えてみると「膨大な単純計算」というのは画像処理以外にもありそうです。

たとえば近年注目を集めているのはビッグデータ、機械学習で用いる手法の1つであるニューラルネットワーク、そして仮想通貨です。

ビッグデータは膨大なデータを蓄積しており、その処理には無数の単純計算を含みます。ニューラルネットワークは無数のニューロンの階層構造を持ち、学習の度にニューロンごとに計算してパラメータを修正する仕組みになっています。仮想通貨では「マイニング」(取引情報を承認する作業)に膨大な単純計算を伴います。こうした作業に、人海戦術的な並列計算に特化したGPUが有用なのです。

画像

1つひとつのニューロンが行う計算は単純だが、それが膨大な数に及ぶため、GPUによる並列処理が向いている

(Photo/Getty Images)

このように、画像処理以外の計算をするGPUが「GPGPU」です。とは言え、面倒な計算処理をそのままGPGPUに任せれば使えるという仕組みにはなっていません。

先述の例を出すと、コアにあたる“中学生”に配布されているマニュアルは画像処理用のもので、突然ニューラルネットワークの計算を任せても、かえって時間がかかります。計算させたい処理を「画像処理に置き換えて」GPUに任せられるようにするための下処理が必要になるのですが、これは中学生に分かるようにゼロからマニュアルを作るようなもの。かなり煩雑な作業です。

そこで、GPUメーカー等からGPGPU向けにある種のマニュアル作成システムにあたる「統合開発環境」が提供されるようになってきています。

NVIDIAの「CUDA」などはその最たるもので、CUDAを利用することでGPUをGPGPUとして利用できるようになり、データ分析や人工知能開発にGPUを利用できるようになりました。タスクにもよりますが、今までCPUだけでやっていた場合に比べてパフォーマンスは数倍以上になることも少なくありません。

また、GPU自体はゲームや映像処理向けに大量生産されているため安価に手に入ることもあり、専用の演算システムを作り上げるよりも低コストで開発環境を構成できるようになりました。

 

Loading

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です