GPU、CUDA、cuDNNの関係のまとめ

2023-07-28 20:17:30

tryとcatchの使い方 JSONの詳細な分析

目次

  1. CPUとGPU
  2. CUDA
  3. クドン
  4. 要約する
  5. バージョンを照会するコマンド

CPUとGPU

CPU と GPU の構造は、
GPU (グラフィックス プロセッシング ユニット) と CPU (中央処理装置、中央処理装置) の設計の主な違いは、GPU にはより多くのコンピューティング ユニット (図の緑色の ALU) が搭載されているのに対し、これは、GPU が並列計算を実行するときに各計算ユニットが同じプログラムを実行し、あまり多くの制御を必要としないためです。キャッシュ ユニットはデータのキャッシュに使用され、CPU はキャッシュを使用してメイン メモリへのアクセス数を削減、つまりメモリ レイテンシを削減できます。GPU は並列コンピューティングを通じてメモリ遅延を削減できるため、GPU にはキャッシュがほとんどまたはまったくありません。したがって、CPU の Cahce 設計は主に低レイテンシーの実現を目的としており、制御は主に汎用性を目的としており、複雑なロジック制御ユニットにより、CPU によるタスクと命令の効率的な分散が保証されます。したがって、CPU は論理制御であるシリアルコンピューティングを得意とし、GPU は高負荷のコンピューティングである並列コンピューティングを得意とします。たとえば、GPU は何万ものクーリーのようなもので、それぞれが同様のハードワークを行い、相互に依存することはなく、すべて独立しており、単純な数の人々が強力です。CPU は請負業者のようなもので、クールな仕事もできますが、人数が少ないため、タスクの割り当てや人員のスケジュール調整などを主に担当します。
GPU アクセラレーションは、多数のスレッドを並列処理することによって実現されるため、高度に並列化できない作業の場合、GPU は効果がないことがわかります。CPU は高い汎用性が要求される直列動作であり、主にタスクの管理と分散の役割を果たします。

CUDA

CUDA は、NVIDIA が自社の GPU のために立ち上げた並列コンピューティング フレームワークです。つまり、CUDA は NVIDIA の GPU 上でのみ実行でき、解決すべきコンピューティング問題が超並列化できる場合にのみ CUDA がその役割を果たします。

クドン

cuDNN (CUDA Deep Neural Network library): NVIDIA が作成したディープ ニューラル ネットワーク用の高速化ライブラリであり、ディープ ニューラル ネットワーク用の GPU 高速化ライブラリです。GPU を使用してモデルをトレーニングする場合、cuDNN は必要ありませんが、通常はこの高速化ライブラリが使用されます。

要約する

簡単に言うと、CPUはシリアルコンピューティングに適しており、ロジック制御が得意です。GPU は、AI アルゴリズムのトレーニングと学習に適した高強度の並列コンピューティングに優れています。CUDA は、
コンピューティング ユニットを管理および割り当てるための NVIDIA のフレームワークです。cuDNN は、
ディープ ニューラル ネットワーク用の GPU アクセラレーション ライブラリです。

バージョンを照会するコマンド:

ubuntu:

cuda バージョン
nvcc -V
cat /usr/local/cuda/version.txt

cudnn バージョン
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2

Nvidia GPUのバージョンを確認する
nvidia-smi

//10秒を1回表示
watch -n 10 nvidia-smi

nvidia-smi -l