GPU コンピューティング – それは何ですか?
GPU コンピューティングやアクセラレーションについてよく耳にしますが、その意味がよくわかりませんか? 知っておくべきことはすべてここにあります。

GPU またはグラフィックス プロセッシング ユニットは、何らかの形のディスプレイを生成するすべての電子回路、特にコンピュータに存在します。
初期のグラフィックス プロセッサは比較的単純でした。 しかし、CPU の限界を超えたゲーム、3D アニメーション、およびビデオ レンダリング タスクの出現により、より強力な GPU が助けに来なければなりませんでした。
これらの新しい GPU カードは、さまざまな企業や研究者が並列実行の利点を活用する方法を模索する中で、時間の経過とともに能力と複雑さが増しました。 この投稿は、これまでの経過を示しています。
GPU とは
GPU またはグラフィックス プロセッシング ユニットは、表示用の画像の作成を支援するためにデータを操作するために設計された特殊な回路です。 つまり、GPU は、コンピューターのモニター、スマートフォンの画面、ゲーム コンソールなど、あらゆる表示面に表示される画像を作成するシステムです。
GPUは当初、特定のデバイスに最適な出力を生成するためにグラフィック要素を組み合わせるだけのシンプルなデバイスでした。しかし、時が経つにつれ、そしてコンピュータゲームの登場とともに、GPUは複雑さと性能を増し、GPGPU(General Purpose Computing on GPUs:汎用GPU)が誕生しました。
GPU コンピューティングとは
GPU コンピューティングまたは GPGPU は、グラフィックスを超えた計算に GPU を使用することです。 これは、コンピュータのビデオ カードに組み込まれた GPU を使用することを意味し、元々は科学シミュレーション、暗号通貨マイニング、代数計算、天気予報、ニューラル ネットワークなど、他の種類のデータの計算のためにコンピュータ グラフィックスを処理することを目的としていました。
GPU コンピューティングがこのように進化した理由は、最新の GPU システムの分散型並列アーキテクチャに由来するグラフィックス プロセッシング ユニットの印象的な発展によるものです。
コンピュータのCPUがより高性能になり、より複雑なプログラムやゲームを処理できるようになるにつれて、ビデオカードメーカーも現代のコンピューティングと3Dグラフィックスの発展に追いつこうと努力した。Nvidiaは1999年に世界初のGPUビデオカードであるGeForce 256を発表し、そこから状況は進化していった。
CPU に対する GPU カードの主な利点は、その並列処理アーキテクチャです。これにより、大量のデータ タスクを分散並列方式で処理できるため、ボトルネックや CPU フリーズを防ぐことができます。
GPU コンピューティングのアプリケーションとは?
GPU コンピューティングの用途は数多くあります。主な用途をいくつか紹介します。
- 機械学習とニューラル ネットワーク
- ファジーロジック
- バイオインフォマティクス
- 分子モデリング
- ビデオレンダリング
- 幾何学的計算
- 気候研究と天気予報
- 天体物理学
- 暗号学
- コンピュータビジョン
- パスワードクラッキング
- 量子研究
GPU 対 CPU 処理
GPU と CPU はどちらもデジタル データを処理しますが、その方法は異なります。 CPU または中央処理装置は、高速でのシリアル処理用に設計されていますが、GPU ははるかに低速での並列処理用に設計されています。 もちろん、CPU はハイパースレッディングを使用してコアごとに 2 つのスレッドを取得したり、数十のコアを使用したりすることもできますが、それらは基本的にシリアル プロセッサです。
CPUは少数のコアしか持たないのに対し、最新のGPUは数千ものコアを搭載しており、例えばNvidia GeForce RTX 3090は10万個以上のコアを備えています。しかし、CPUに対して優位に立つためには、データが並列処理に対応している必要があり、例えば数千枚の画像を含むストリームを一度に処理するといったことが求められます。
GPU 対 ASIC
ASIC は Application Specific Integrated Circuit の略で、これは XNUMX つのタスク、つまり実行するように設計されたタスクしか実行できないことを意味します。 ASIC はゼロから開発された独自のマシンであり、構築するにはハードウェアの専門知識が必要です。 ASIC は、GPU よりも優れた並列処理の利点と効率性を提供するため、仮想通貨のマイニングで一般的に使用されています。
ただし、この XNUMX つの主な違いは、GPU の方が汎用性が高いことです。 たとえば、GPU を使用して暗号通貨マイニング リグを簡単に構築できます。 パーツは簡単に入手でき、マイニングが完了したら、いつでも GPU カードをゲーマーや他のマイナーに販売できます。 ただし、ASIC を使用すると、中古のマシンを他のマイナーにしか販売できません。
ASIC マシンは大量生産品ではないため、暗号通貨のマイニングを超えて、ASIC マシンを手に入れることはさらに困難になります。 これは、どこにでもあり、簡単に構成できる GPU システムとは大きく異なります。
GPU 対クラスター コンピューティング
XNUMX 枚の GPU カードには数千のコアが含まれており、それを接続するコンピューターに途方もない能力を追加しますが、理論的には、処理できる数の GPU カードをコンピューターのメインボードに追加して、処理能力をさらに高めることができます。
一方、コンピューター クラスターとは、複数のコンピューターがネットワーク化されて XNUMX つの大きなコンピューター (スーパーコンピューター) として機能することを指します。 ネットワーク上の各コンピューターはノードと呼ばれ、マルチコア CPU と XNUMX つ以上の GPU カードを搭載できます。
各クラスターには、ワーカー ノードの管理とスケジューリングを担当するフロント コンピューターであるマスター ノードが必要です。 また、ワーカー ノードが計算して結果を返すためのデータとプログラムを割り当てるソフトウェアも含まれます。
GPU アクセラレーションとハイパースレッディング
CPU は一度に複数のタスクを処理するように設計されているため、非常に高速で実行され、複数のプロセス間の処理時間をスケジューリングします。 ただし、計算負荷の高い関数に遭遇すると、他のプロセスに戻る前にループ内でしばらく過ごすことがあります。 これにより、通常、コンピュータの全体的な速度が低下し、最悪の場合、システムが完全にフリーズします。
コンピューターの設計者は、ハイパースレッディングまたは GPU アクセラレーションを使用することで、この恐ろしいシナリオを回避できます。 ハイパースレッディングでは、XNUMX つの CPU コアが XNUMX つの処理スレッドとして機能します。 そのため、XNUMX つのスレッドが計算負荷の高いループに陥った場合でも、もう XNUMX つのスレッドがシステムをまとめることができます。
現在のコンピューターには、2 から 4、8、16、32 などの複数のコアがあります。 さらに、ハイパースレッディングを備えているため、2 コアの CPU は 4 つのスレッドを提供し、4 コアの CPU は 8 つのスレッドを提供します。
マルチコア CPU を使用したハイパースレッディングは、ほとんどのコンピューティングの問題を解決し、ボトルネックを防ぎ、シンプルなゲーム、音楽制作、小さなグラフィックス、ビデオ、および機械学習プロジェクトで最高のパフォーマンスを実現します。 しかし、それ以上のパワーが必要な場合は、多くの場合、GPU が適切なソリューションです。
GPU またはハードウェア アクセラレーションは、ソフトウェア アプリケーションが GPU の並列処理能力を活用して、CPU の速度を落とすことなく大量のデータを処理する機能です。 多くのプロフェッショナル アプリケーションは、適切に機能するために GPU アクセラレーションに依存しています。 これらには、ビデオおよびアニメーションのデザイン/レンダリング プログラム、エンコーダー、暗号化、大規模なニューラル ネットワークなどが含まれます。
GPGPU プログラミングの基礎
GPUの汎用プログラミングは、当初はDirectXとOpenGLライブラリを使用して行われていました。しかし、これらはグラフィックス開発専用に設計されていたため、データをグラフィックスのようなモデルに変換して使用する必要がありました。
幸いなことに、GPGPU には長年にわたって大きな進歩があり、ライブラリ、プログラミング言語、およびフレームワークにつながっています。 これらのフレームワークの中で最も人気があるのは、Nvidia の CUDA です。
CUDA を使用すると、開発者は、従来の GPU プログラミングの本質を知らなくても、簡単に GPU プログラミングに取り掛かることができます。 グラフィック以外の開発を強化する機能を提供し、機械学習固有の機能を備えたユニットも多数あります。
また、利用可能なライブラリを使用すると、GPU で高速化された新しいプログラムをゼロから簡単に作成したり、事前に作成されたプログラムを並列処理に適応させたりすることが容易になります。 適切なライブラリを選択し、並列ループ用にコードを最適化し、再コンパイルするだけです。
CUDA コアとストリーム プロセッサ
CUDAコアとストリームプロセッサという用語をよく目にするでしょう。どちらの用語も、GPUのコア、つまり演算論理ユニットを指します。CUDAコアはNVIDIA独自の技術であり、ストリームプロセッサはAMDの技術です。
もう 8 つの用語は、ストリーミング マルチプロセッサまたは SM です。 これは、元々 SM ごとに 32 つの CUDA コアをグループ化した別の Nvidia テクノロジです。 コマンドごとに 4 クロック サイクルを使用して、一度に 100 スレッドのワープを実行します。 最近の設計では、ストリーミング マルチプロセッサあたり XNUMX を超えるコアを備えています。
上位の GPU 言語とライブラリ
Nvidia CUDA と AMD の両方のプラットフォームで動作するライブラリや言語は数多くあります。 以下はほんの一部です:
- Nvidia cuBLAS – CUDA 用の基本的な線形代数サブプログラム
- クドン – ディープ ニューラル ネットワーク ライブラリ
- OpenCLの – 並列プログラミングのオープンスタンダード
- Openmp – AMD GPU の場合
- HIP – C++ ライブラリ
- Nvidia キューランド – 乱数生成
- CUFFT – 高速フーリエ変換用
- エヌビディア NPP – 2D 画像および信号処理
- GPU VSIPL – ベクトル画像と信号処理
- OpenCV – コンピュータ ビジョン用の GPU ライブラリ
- OpenACC – 並行開発用言語
- PyCUで – CUDA プラットフォーム用の Python
- TensorRT – CUDA のディープラーニング
- CUDA C ++ – CUDA 用の C++ 言語
- CUDA C – CUDA の C 言語
- CUDA フォートラン – FORTRAN 開発者向けの CUDA
上位の GPU クラスター プロジェクト
2022 年 8 月の時点で、世界最速のスーパーコンピューター 10 台のうち XNUMX 台が GPU で高速化されています。 それらはすべてLinux OSも共有しており、次のとおりです。
| ランク | 名前 | ペタフロップス | CPUコア | GPUコア | 電力(kW) | 年 |
| 1. | フロンティア | 1,102 | 591,872 | 8,138,240 | 21,100 | 2022 |
| 2. | ルミ | 151.90 | 75,264 | 1,034,880 | 2,900 | 2022 |
| 3. | サミット | 148.6 | 202,752 | 2,211,840 | 10,096 | 2018 |
| 4. | シエラ | 94.64 | 190,080 | 1,382,400 | 7,438 | 2018 |
| 5. | ペルムッター | 64.59 | 無し | 無し | 2,589 | 2021 |
| 6. | セレネ | 63.46 | 71,680 | 483,840 | 2,646 | 2020 |
| 7. | 天河-2 | 61.445 | 427,008 | 4,554,752 | 18,482 | 2013 |
| 8. | アダストラ | 46.1 | 21,632 | 297,440 | 921 | 2022 |
結論
GPU コンピューティングとそれに付随するすべてへのこのダイビングの終わりに到達すると、今ではそのパワーと範囲についてのアイデアが得られているはずです。
さらに詳しい情報については、 Nvidiaの開発者プラットフォーム(こちら)またはAMDの開発者プラットフォーム(こちら)をご覧ください。




