GPUとGPUコンピューティング

GPUとGPUコンピューティング

今までは高度な科学計算や分析計算など、企業や研究機関にて大規模な数値計算に利用されてきたGPUコンピューティングですが、近年はビッグデータやAIの活用が進むにつれ、普段の生活の中でも意識せず利用していることが多くなっています。また個人のパソコンでも、動画や写真の編集ソフトなどでGPUの能力を利用できる環境が整ってきました。
本稿では、GPUの発展とGPUコンピューティングが誕生した流れを学習します。

1.GPUとは

GPUとは”Graphic Processing Unit”の略で、パーソナルコンピューターやワークステーションの中で、画像処理をするために搭載されている部品の一つです。描画に関する演算を行うための回路を多数持ったGPUと、CPUから独立した専用のビデオメモリーを備えています。GPUは、グラフィックスカードとしてマザーボードとは別にパソコンに実装される形態の他、 CPUに統合されている形態(オンボードグラフィックス)もあります。3Dゲームをプレイされる方は、ご自身のパソコンに搭載されているGPUの種類について気にされる方も多いと思います。

2.GPUの発展

元々は単純な文字や図形の描画を行うために作られた「グラフィックコントローラー」と呼ばれる集積回路(IC)でした。コンピューターの発達とともに表現する内容も複雑になり、CUI(Character UserInterface)ベースのOSからGUI(Graphic UserInterface)ベースのOSへの進化によって、CPUによるソフトウェア処理だけで描画を行うことが難しくなりました。これらの複雑になった描画処理を、専用のハードウェアにより実装することで、システム全体の処理速度や効率を向上するために開発されたのが「グラフィックアクセラレーター」です。さらに、3次元グラフィックを扱うゲームやソフトウェアの普及、DirectXやOpenGLといった複雑な描画に関する標準的なAPIが開発・整備され、それらに対応したより高度な描画を行うための回路がハードウェアで実装されていきます。

当初は、バーテックスシェーダーやジオメトリシェーダーといった各描画処理ごとに専用のハードウェア演算回路を実装することが一般的でした。しかしながら、設計段階で各々の演算回路をどの割合で配置するかを決定しなくてはならず、実際の利用状態ではすべての演算回路が効率よく使われない欠点がありました。

その欠点を解消したのが、ユニファイドシェーダーの開発です。それまでの専用演算回路をある程度汎用的な回路に置き換えることで、より効率よく演算回路を利用できるようになりました。
その他にも、ソフトウェア・ファームウェアのアップデートにより機能の改善や追加ができるようになったほか、描画処理以外の処理を実行できるようになり、GPUコンピューティングの発展につながっていきます。

主なGPUの製品例
製造・開発メーカー モデル
nVidia GeForce,Quadro,Tesla
AMD Radeon,FirePro,FireStream

3.GPUコンピューティングとは

GPUコンピューティングとは、その名の通りGPUを描画・画像処理に使用するのではなく、汎用的な演算に用いる技術のことです。前述の通りGPUは、描画・画像処理をより効率的に処理する構造から発展して、汎用計算も処理出来るようになりました。CPUと比較して単純な演算回路を高密度に集積することにより、単純な演算を大量に実行することを得意としています。その逆にCPUが得意とする複雑な条件分岐を行わないのであればピーク理論演算性能は同一価格帯のCPUを大幅に上回ることになります。

多数の分岐条件を伴うような複雑な演算が得意なCPUと大量の、行列計算などの単純な演算が得意なGPUを組みあわせることにより、従来のようにCPUのみで演算させるより高速且つ大量の演算を実行することができるようになりました。
また、拡張バスを利用してひとつのコンピューター内に多数のGPUを搭載することで、システム全体として高い密度で高い演算能力を持たせることが可能となりました。

4.CUDA とそれ以外の開発環境

GPUが汎用計算に利用されるきっかけとなったのは、2006年にnVidia社が自社製GPU向けにリリースした「CUDA(ComputeUnified Device Architecture)」という技術です。nVidiaの「CUDA」以外にも、AMDの「AMDStream」、クロノス・グループによる「OpenCL」などがあり、それぞれが従来のプログラム開発環境と親和性が高い開発手段を提供しています。
ハードウェアをある程度意識した知識やノウハウが必要になったとはいえ、従来は難しかったGPUを利用したプログラムの開発を行える開発環境の普及により、GPUコンピューティングが一気に普及していきました。

5.GPUコンピューティングの活用と普及

GPUコンピューティングが普及し始めた当初は、大規模な数値計算、例えば物理シミュレーションや流体・天体・気候などのシミュレーションに活用されていました。
膨大な量の計算が必要なこれらの処理は専用のプログラムを用いて使用され、研究機関や企業により利用されるものでした。
ここ数年はGPUコンピューティングの活用が一般的なワークステーションやパーソナルコンピューターにも広がってきています。「AfterEffect」「Premiere」「TMPGEnc」といった映像・動画編集ソフトの他、「Iray」「V-ray」といったCGレンダリングエンジン、「Photoshop」などの画像加工ソフト、その他にもビットコインの採掘処理やBOINCのような分散コンピューティングにも利用されています。
従来では3Dゲーム以外に利用することのなかった高性能GPUの能力を、動画や写真の編集といったクリエイティブなソフトで利用することにより、一般のパソコンユーザーによる活用が広がってきています。
6.GPUコンピューティングの今後昨今では、ビッグデータやAIの活用が進んだことにより、膨大な量のデータをより早くより大量に分析・解析することが求められています。自動車の自動運転に用いられる画像解析や自律学習も、GPUコンピューティングを活用している一つの事例です。それ以外にも気象解析や市況分析など、GPUコンピューティングによる計算結果が意識せずとも普段の生活と密接に関わってくるようになりました。それらのHPC(HighPerformance Computing)分野では、これからもGPUの活用が進んでいくと予想されています。
一般的なパソコンユーザーであっても、高画素化が進むデジタルカメラやアクションカメラで撮影した高精細な写真や動画の編集作業において、前項のようなソフトウェアが利用されています。そのような趣味で楽しむ層にも、今まで以上にGPUコンピューティングが活用されていくでしょう。より美しくより速く処理することは、ユーザーにとって大きなメリットとなります。
魅力的な映像コンテンツを視聴・閲覧したり、気象予報や自動運転、AI搭載家電など、普段皆さんが生活を送っていく中で、GPUコンピューティングの恩恵を意識せずに受けていくことになると予想されます。
このような技術によって、生活がより豊かに、快適に過ごせるのでは?と意識してみてはいかがでしょうか。

特定非営利活動法人 パソコン整備士協会