GPU コンピューティング – それは何ですか?
GPU またはグラフィックス プロセッシング ユニットは、何らかの形のディスプレイを生成するすべての電子回路、特にコンピュータに存在します。
初期のグラフィックス プロセッサは比較的単純でした。 しかし、CPU の限界を超えたゲーム、3D アニメーション、およびビデオ レンダリング タスクの出現により、より強力な GPU が助けに来なければなりませんでした。
これらの新しい GPU カードは、さまざまな企業や研究者が並列実行の利点を活用する方法を模索する中で、時間の経過とともに能力と複雑さが増しました。 この投稿は、これまでの経過を示しています。
GPU とは
GPU またはグラフィックス プロセッシング ユニットは、表示用の画像の作成を支援するためにデータを操作するために設計された特殊な回路です。 つまり、GPU は、コンピューターのモニター、スマートフォンの画面、ゲーム コンソールなど、あらゆる表示面に表示される画像を作成するシステムです。
GPU は当初、グラフィック要素を組み合わせて特定のデバイスに最適な出力を作成する単純なデバイスでした。 しかし、時が経ち、コンピューター ゲームの出現により、GPU の複雑さとパワーが増大し始め、 GPGPUまたは汎用 コンピューティング GPU上で.
GPU コンピューティングとは
GPUコンピューティングまたはGPGPUは、グラフィックス以外の計算にGPUを使用することです。これは、コンピュータのビデオカードに埋め込まれ、本来はコンピュータグラフィックスの処理を目的としていたGPUを、科学シミュレーションなどの他の種類のデータの計算に使用することを意味します。 cryptocurrency マイニング、代数計算、天気予報、ニューラルネットワークなど。
GPU コンピューティングがこのように進化した理由は、最新の GPU システムの分散型並列アーキテクチャに由来するグラフィックス プロセッシング ユニットの印象的な発展によるものです。
コンピューターの CPU がより強力になり、より複雑なプログラムやゲームを処理できるようになると、ビデオ カード メーカーも最新のコンピューティングと 3D グラフィックスの発展に追いつこうとしました。 Nvidia が発表した GeForce 256 1999 年に世界初の GPU ビデオ カードとして登場し、そこから進化しました。
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 コアまたは 算術論理ユニット GPUの. CUDA Core は Nvidia の独自技術であり、Stream プロセッサは 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はこちら.