GPU コンピューティング – それは何ですか?

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

GPU またはグラフィックス プロセッシング ユニットは、何らかの形のディスプレイを生成するすべての電子回路、特にコンピュータに存在します。

初期のグラフィックス プロセッサは比較的単純でした。 しかし、CPU の限界を超えたゲーム、3D アニメーション、およびビデオ レンダリング タスクの出現により、より強力な GPU が助けに来なければなりませんでした。

これらの新しい GPU カードは、さまざまな企業や研究者が並列実行の利点を活用する方法を模索する中で、時間の経過とともに能力と複雑さが増しました。 この投稿は、これまでの経過を示しています。

GPU とは

GPU またはグラフィックス プロセッシング ユニットは、表示用の画像の作成を支援するためにデータを操作するために設計された特殊な回路です。 つまり、GPU は、コンピューターのモニター、スマートフォンの画面、ゲーム コンソールなど、あらゆる表示面に表示される画像を作成するシステムです。

GPU は当初、グラフィック要素を組み合わせて特定のデバイスに最適な出力を作成する単純なデバイスでした。 しかし、時が経ち、コンピューター ゲームの出現により、GPU の複雑さとパワーが増大し始め、 GPGPU または GPU での汎用コンピューティング.

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

GPU コンピューティングまたは GPGPU は、グラフィックスを超えた計算に GPU を使用することです。 これは、コンピュータのビデオ カードに組み込まれた GPU を使用することを意味し、元々は科学シミュレーション、暗号通貨マイニング、代数計算、天気予報、ニューラル ネットワークなど、他の種類のデータの計算のためにコンピュータ グラフィックスを処理することを目的としていました。

GPU コンピューティングがこのように進化した理由は、最新の GPU システムの分散型並列アーキテクチャに由来するグラフィックス プロセッシング ユニットの印象的な発展によるものです。

コンピューターの CPU がより強力になり、より複雑なプログラムやゲームを処理できるようになると、ビデオ カード メーカーも最新のコンピューティングと 3D グラフィックスの発展に追いつこうとしました。 Nvidia が発表した GeForce 256 1999 年に世界初の GPU ビデオ カードとして登場し、そこから進化しました。

CPU に対する GPU カードの主な利点は、その並列処理アーキテクチャです。これにより、大量のデータ タスクを分散並列方式で処理できるため、ボトルネックや CPU フリーズを防ぐことができます。

GPU コンピューティングのアプリケーションとは?

GPU コンピューティングの用途は数多くあります。主な用途をいくつか紹介します。

  1. 機械学習とニューラル ネットワーク
  2. ファジーロジック
  3. バイオインフォマティクス
  4. 分子モデリング
  5. ビデオレンダリング
  6. 幾何学的計算
  7. 気候研究と天気予報
  8. 天体物理学
  9. 暗号学
  10. コンピュータビジョン
  11. パスワードクラッキング
  12. 量子研究

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 の両方のプラットフォームで動作するライブラリや言語は数多くあります。 以下はほんの一部です:

  1. Nvidia cuBLAS – CUDA 用の基本的な線形代数サブプログラム
  2. cuDNN – ディープ ニューラル ネットワーク ライブラリ
  3. OpenCLの – 並列プログラミングのオープンスタンダード
  4. Openmp – AMD GPU の場合
  5. HIP – C++ ライブラリ
  6. Nvidia キューランド – 乱数生成
  7. cuFFT – 高速フーリエ変換用
  8. Nvidia NPP – 2D 画像および信号処理
  9. GPU VSIPL – ベクトル画像と信号処理
  10. OpenCV – コンピュータ ビジョン用の GPU ライブラリ
  11. OpenACC – 並行開発用言語
  12. PyCUDA – CUDA プラットフォーム用の Python
  13. TensorRT – CUDA のディープラーニング
  14. CUDA C ++ – CUDA 用の C++ 言語
  15. CUDA C – CUDA の C 言語
  16. CUDA フォートラン – FORTRAN 開発者向けの CUDA

上位の GPU クラスター プロジェクト

2022 年 8 月の時点で、世界最速のスーパーコンピューター 10 台のうち XNUMX 台が GPU で高速化されています。 それらはすべてLinux OSも共有しており、次のとおりです。

ランクお名前ペタフロップスCPUコアGPUコア電力(kW)
1.フロンティア1,102591,8728,138,24021,1002022
2.ルミ151.9075,2641,034,8802,9002022
3.サミット148.6202,7522,211,84010,0962018
4.シエラ94.64190,0801,382,4007,4382018
5.ペルムッター64.59同サイズ同サイズ2,5892021
6.セレネ63.4671,680483,8402,6462020
7.天河-261.445427,0084,554,75218,4822013
8.アダストラ46.121,632297,4409212022

結論

GPU コンピューティングとそれに付随するすべてへのこのダイビングの終わりに到達すると、今ではそのパワーと範囲についてのアイデアが得られているはずです。

詳細については、の開発者プラットフォームを確認してください。 Nvidiaはこちら またはの AMDはこちら.

ンナムディ・オケケ

ンナムディ・オケケ

Nnamdi Okekeは、さまざまな本を読むのが大好きなコンピューター愛好家です。 彼はWindows/MacよりもLinuxを好み、使用しています。
当初からのUbuntu。 ツイッターで彼を捕まえることができます ボンゴトラックス

記事:178

技術者のものを受け取る

技術トレンド、スタートアップトレンド、レビュー、オンライン収入、Webツール、およびマーケティングを月にXNUMX〜XNUMX回

コメントを残す

あなたのメールアドレスは公開されません。