ジー‐ピー‐ジー‐ピー‐ユー【GPGPU】
GPGPU
読み方:ジーピージーピーユー
GPGPUとは、元来は画像処理用のGPU(Graphics Processing Unit)の演算性能を、本来の画像処理以外の用途のために汎用的に利用する概念、技術のことである。
GPUは特に3次元グラフィック用計算のために、大量の計算を高速で行うことが要求されてきたが、画像処理に限定せず汎用的に活用するために考えだされたのがGPGPUである。計算速度が高速であるため、世界トップクラスのスーパーコンピュータにも使われるようになってきた。
GPGPUをフルに活用するためには、汎用プロセッサとは異なるプログラミングが必要である。最大限活用するためには、そのアーキテクチャに適したプログラミング技術が求められ、そのためのフレームワークとしては例えば業界標準のOpenCLがある。
なお、多くのGPUがGPGPUとして利用できるようになり、単にGPUだけでもGPGPUの意味を含んでいる場合も多い。
GPGPU
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2024/08/11 16:00 UTC 版)
GPGPU(General-purpose computing on graphics processing units; GPUによる汎用計算)とは、GPUの演算資源を画像処理以外に応用する技術である[1][2]。ビッグデータなどに対し大量の科学技術計算などを実行できるため、広く使われるようになった[3]。2022年、単一マシンとしては世界初のエクサスケールコンピュータとなった米HPEの「フロンティア」にもベクトル計算用にAMDのGPUが搭載されるなど、世界最速を競うスーパーコンピュータでの利用も一般的である。
- 1 GPGPUとは
- 2 GPGPUの概要
GPGPU
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/02/06 11:56 UTC 版)
「Microsoft DirectX」の記事における「GPGPU」の解説
DirectXはバージョン11において、GPGPU用APIであるDirectComputeをDirect3Dの一部(コンピュートシェーダー)として包括的に実装している。OpenGLもまたバージョン4.3において、Direct3Dと同様のコンピュートシェーダーを導入している。なお、Direct3D/OpenGLともに、GPGPUを含むクロスプラットフォームなヘテロ環境用アクセラレーターAPIであるOpenCLとの連携(相互運用)を行なう拡張機能が用意されている。
※この「GPGPU」の解説は、「Microsoft DirectX」の解説の一部です。
「GPGPU」を含む「Microsoft DirectX」の記事については、「Microsoft DirectX」の概要を参照ください。
GPGPU
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/06/10 13:52 UTC 版)
「PlayStation 4」の記事における「GPGPU」の解説
本機ではGPUでグラフィック処理以外の汎用演算処理を行うGPGPUが特に重視されている。GPUはその特性から単純な演算の繰り返しに長けており、浮動小数点演算においては本機のGPUはCPUに対して11.5倍も高速に処理を行うことができ(FLOPS比)、物理演算などを担わせれば高い性能を発揮することができる。PS3のCellに搭載されたSPUコアもSIMD浮動小数点演算を得意としていたが、本機ではこれをGPGPUによって担わせている。 GPGPUはGPUでグラフィック処理と汎用演算の双方を行うものであるが、グラフィック描画処理を実行する中で適宜余った性能を汎用演算に振り分けるという事は難しく、そのためグラフィック処理を抑え汎用演算のために性能を余剰させなければならないこと、加えて特にNVIDIAのGPUではグラフィック処理と汎用演算で内部メモリーの扱い方が異なるため、その都度モードを切り替える必要があり双方を同時に実行できない事などが問題点だった。そこで本機ではPS3で活用されたSPURS(SPU Runtime System; 余ったSPUなどのリソースを仮想化し自律的に演算処理を行わせる仕組み)を参考に、グラフィック処理と汎用演算を効率よく同時に行うことができるようカスタマイズが施されているとされる。その例としてGPUコアからL1/L2キャッシュをバイパスし10GB/sの帯域幅で直接メインメモリーを読み書きできるようになっていること、L2キャッシュに新たにvolatileタグが設けられメインメモリーに直接書き込むデータを区別できるようにされており結果としてGPUのキャッシュメモリーをすべてグラフィック処理用に効率よく割くことができるようになっていることなどが挙げられている。これらによりGPGPUをCPUのような感覚で容易に行うことができるとされている。 GPGPUを支援するものとして前述のHSAなどがあるが、このようなアーキテクチャに基づいた統一的なプログラミング言語およびAPIを利用した場合は開発が容易になる反面処理効率を高めることが難しくなることから、SCEはまず独自の最適化技術を用いた独自シェーダー (PlayStation Shader Language; PSSL) を提供する。またそれに続いてより深いレベルでのハードウェアアクセス、中期段階としてOpenGLやDirectXなどの汎用API対応および完全なハードウェアアクセスも提供していくとした上で、長期的には開発を容易にするためCPUとGPUで同じプログラミング言語を使えるようにすることが目標とされている。
※この「GPGPU」の解説は、「PlayStation 4」の解説の一部です。
「GPGPU」を含む「PlayStation 4」の記事については、「PlayStation 4」の概要を参照ください。
GPGPU
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/07/25 13:20 UTC 版)
GPGPUに関しては、統合型シェーダーアーキテクチャの出現以降、NVIDIA社によるCUDA、KhronosグループによるOpenCL、マイクロソフト社によるDirectComputeといったAPIの整備・標準化も進んでいる。APIごとに特色はあるが、カーネル記述方式などに概ね似通った特徴を持つ。ただしCPUとGPUはメモリ空間が異なるため、まずCPU側のメモリからGPU側のメモリに入力データをコピーしてGPUに処理を実行させ、さらに処理後の結果を出力データとしてGPU側のメモリからCPU側のメモリにコピー(リードバック)する必要があるなど、プログラミングモデルは分散メモリ環境に近く、煩雑である。 AMDはCPUとGPUを統合したAPUを開発しているが、さらにCPUとGPUのメモリ空間までをも統合し、データ転送の手間を減らしてGPGPUアプリケーションソフトウェアの実装を容易にするための仕組みとしてHeterogeneous System Architecture (HSA) を提唱・推進している。 「GPGPU」も参照
※この「GPGPU」の解説は、「並列計算」の解説の一部です。
「GPGPU」を含む「並列計算」の記事については、「並列計算」の概要を参照ください。
GPGPU
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/03/13 18:41 UTC 版)
詳細は「GPGPU」を参照 GPGPU (General-Purpose computing on Graphics Processing Units) は、「GPU (Graphics Processing Unit) による汎用計算」という意味の頭字語(イニシャリズム)で、GPU Computingとも呼ばれることがある。この文脈におけるComputingはグラフィックス処理に限らない計算処理全般を意味している。 GPUはその本来の用途であるグラフィックスパイプラインの要求に由来する高い計算能力とスループットを持つ、SIMDタイプの高性能高並列プロセッサである。GPUにおける演算ユニットの最小単位は「ストリームプロセッサ」あるいは「ストリーミングプロセッサ」と呼ばれることがあるが、このストリームプロセッサ1つ1つは単純な構造であり、オペレーティングシステム (OS)・アプリケーションソフトウェアの実行や周辺機器制御などの汎用処理全般をつかさどるマイクロプロセッサすなわちCPUのように複雑かつ広範な処理をこなすことはできない。しかし、単純な構造であるがゆえに集積度を高くすることができるため、理論演算性能(FLOPS値)に関していえば、GPUは同世代の製造プロセスにおけるCPUと比べて遥かに高い性能を持っている。また、CPUと比較して電力あたりの理論演算性能(ワットパフォーマンス、Performance per Watt)すなわち電力効率が高いのもGPUの特徴である。そのため、HPC分野においても、x86/x64ベースのCPUを多数用いるより、GPUを多数用いたほうが安価かつ効率的なシステムとなることが期待できる。 GPGPUのきっかけとなったプログラマブルシェーダーが登場した当初は、GPUはコンピュータグラフィックスに特化した設計であり、GPGPUプログラムの開発も難しかった。しかし、統合型シェーダーアーキテクチャの登場以降、CUDAやOpenCLのように、GPUを汎用の並列プロセッサとしてアクセス可能なプログラミングインターフェイス (API) およびプログラミング言語拡張の標準化とサポート・普及が始まっており、C言語のようなよく使われている言語も使用可能である。ただしCUDAやOpenCLなど、GPGPUをサポートするAPIにおいてデバイス側のカーネル記述に使われるC/C++は独自拡張が施されており、CPU向けのプログラム記述に使用される汎用C/C++とは異なる。また、CUDAはホスト側のC/C++にも拡張が入っており、専用のコンパイラを使用する必要があるなど、GPGPU対応アプリケーションソフトウェアを開発するためには従来のCPU向けプログラミングとは異なる技術や知識が必要となる。
※この「GPGPU」の解説は、「高性能計算」の解説の一部です。
「GPGPU」を含む「高性能計算」の記事については、「高性能計算」の概要を参照ください。
固有名詞の分類
- GPGPUのページへのリンク