CUDAコアとTensorコアは何が違うのか(解説) - All The Differences
目次
CUDAコアとTensorコアは、Nvidiaという会社が開発した製品です。 では、CUDAコアとTensorコアとは何でしょうか? CUDAとはCompute Unified Device Architectureの略で、Nvidiaの開発者が言うように、皆さんのGPUやスマホ、そして車にもCUDAコアは存在します。
CUDAコアは、ソフトウェアが特定の種類のGPU(Graphics Processing Unit)を汎用的に利用できるようにするための並列計算プラットフォームおよびアプリケーションプログラミングインターフェイス(API)です。
テンソルコアは、Nvidia社が開発したもので、GPUにも採用されています。 テンソルコアは、精度を維持したまま動的に計算を適応させ、スループットを向上させる混合精度計算を可能にします。
CUDAコアは、2つの数字を掛け合わせたり、別の数字に足したりするのに使われます。
Tensorコアは、同じように4×4の行列で計算するのですが、これらの計算は、基本的にグラフィックを高速にレンダリングしてくれます。
CUDAとは?
2007年6月23日に発表されたNvidia社が開発したCompute Unified Device Architecture略してCUDAは、並列計算プラットフォームおよびアプリケーションプログラミングインターフェース(API)である。
これにより、ソフトウェアが特定の種類のGPU(Graphics Processing Unit)を使って汎用的な処理を行うことができるようになり、GPU上での汎用コンピューティング(GPU)と呼ばれる方式が実現しました。
CUDAは、GPUの仮想命令セットと並列計算要素に直接アクセスして計算カーネルを実行するソフトウェア層です。 CUDAは、C、C++、Fortranなどの異なるプログラミング言語で動作するように開発されました。
異なるプログラミング言語で作業できるため、Direct3DやOpenGLなどの先行APIと区別すれば、並列プログラミングの専門家がGPUリソースを活用しやすく、より高度なグラフィックプログラミングのスキルが要求されることになるのです。
CUDAを搭載したGPUは、OpenMP、OpenACC、OpenCL、HIPなどのプログラミングフレームワークもサポートしており、これらのコードをCUDAにコンパイルすることができます。 CUDAの最初の名前は、Compute Unified Device Architectureの頭文字でした。 しかしNvidiaは後にこのよく使われる頭文字をやめました。
強力なNvidiaグラフィックスカード GTX 1080 Ti
CUDAについてもっと詳しく
GPU(グラフィックス・プロセッシング・ユニット)は、特殊なコンピュータ・プロセッサとして、リアルタイムで計算量の多い3Dグラフィックス・ワークロードのニーズに対応します。
関連項目: ЪとЪの違いは何ですか? (調べてみましょう) - All The Differences2012年頃、GPUは進化し、ビッグブロックのデータを効率的に処理できる高度な並列マルチコアシステムとなりました。
巨大なデータブロックを並列に処理する場合、この設計は、汎用の中央処理装置(CPU)よりも優れたアルゴリズムになります:
- 暗号ハッシュ関数
- 機械学習
- 分子動力学シミュレーション
- 物理エンジン
- ソートアルゴリズム
CUDAアーキテクチャの現在と将来の用途
- 3Dグラフィックスの描画を高速化
- 動画ファイルフォーマットの相互変換を高速化
- 暗号化・復号化・圧縮の高速化
- バイオインフォマティクス、例:NGS DNAシーケンシング BarraCUDA
- タンパク質のネイティブコンフォメーション予測などの分散計算
- 医療解析シミュレーション、例えばCTやMRIスキャン画像に基づくバーチャルリアリティなど
- 物理シミュレーション、特に流体力学の分野
- 機械学習問題におけるニューラルネットワークのトレーニング
- 顔認識
- email protected]などのBOINCを利用した分散コンピューティングプロジェクト
- 分子動力学
- 暗号通貨を採掘する
- Structure from Motion (SfM)ソフトウェア
テンソルコアとは?
Tensor Coreと呼ばれる特殊なコアは、混合精度のトレーニングを可能にします。 これらの特殊なコアの初期世代は、融合型乗算・加算アルゴリズムでこれを行います。 これにより、4×4 FP16またはFP32行列に対して、2つの4×4 FP16行列の乗算・加算が可能です。
最終的な結果は、わずかな精度の低下でFP32になります。混合精度計算は、入力行列が低精度のFP16であっても、このように指定されます。
この能力は、後のマイクロアーキテクチャによって、さらに精度の低いコンピュータの数値表現にまで拡張されている。
V100から始まるVoltaマイクロアーキテクチャで第1世代が登場し、世代を重ねるごとに新しいGPUマイクロアーキテクチャで計算できるコンピュータの数値精度形式が増えました。
Tensor Coreの容量や機能が、マイクロアーキテクチャの世代ごとにどのように変化し、改善されてきたかは、この後のセクションでお話しします。
Titan Vで作成したグラフィカルな画像
テンソルコアの仕組みは?
第一世代です:
Volta GPUマイクロアーキテクチャは、第1世代のTensor Coreに搭載され、混合精度やFP16数値フォーマットでの学習を可能にした。
また、最上位機種であるV100の640コアは、前世代のPascal GPUと比較して最大で5倍の性能向上を実現しています。
第2世代です:
Turing GPUの登場により、第2世代のTensor Coreが登場し、それまでFP16に限られていたTensor Coreのプリシジョンに、Int8、Int4、Int1が追加されました。
混合精度のトレーニング手順により、GPUの性能スループットはPascal GPUと比較して最大で32倍に向上しました。
第三世代です:
Ampere GPUのアーキテクチャは、VoltaおよびTuringマイクロアーキテクチャの初期の進歩を発展させ、FP64、TF32、bfloat16のプリシジョンをサポートするようになった。
例えば、TF32フォーマットはFP32と同様の機能を持ちながら、コードを変更することなく最大20倍のスピードアップを保証しています。
そして、わずか数行のコードで、自動混合精度の実装により、さらに2倍のスピードでトレーニングを行うことができます。
第3世代のNVLinkによる高速なマルチGPU連携、第3世代のRay Tracingコア、スパースマトリックス数学への特化などが、Ampereマイクロアーキテクチャの特徴です。 .
第4世代です:
将来的にはHopperマイクロアーキテクチャベースの第4世代Tensor Coreのリリースが予定されている。 次期H100に搭載される第4世代Tensor Coresのこと。
は、2022年3月にリリースされる予定で、FP8精度フォーマットを扱うことができ、NVIDIAによれば、巨大な言語モデルを "前世代の30倍という驚異的なスピードで "高速化することができます。
RTXグラフィックスカードは、テンソルコアを搭載しているため、グラフィックを非常に高速に描画するために使用されます。
CUDAコアとTensorコアの違いについて
Tensorコアは現在Titan VとTesla V100に限定されており、両GPUの5120個のCUDAコアは、GPUクロック(例:Tesla V100 PCIe周波数は1.38Gz)あたり単精度乗積演算(例えばfp32で:x += y * z)1回の最大容量となっています。
各テンソルコアは、4×4の小さな行列に対して演算を行います。 GPUの1クロックあたり、各テンソルコアは1回の行列乗算-積算演算を完了できます。
関連項目: バーバリーとバーバリーズ・オブ・ロンドンの違いは何ですか?これは、2つの4×4 FP16行列を乗算し、その結果の4×4 FP32行列をアキュムレータに加算します(これもfp32 4×4行列です)。
入力行列がfp16であるのに対し、乗算結果とアキュムレータがfp32であるため、このアルゴリズムは混合精度と呼ばれる。
正しい表現は、おそらく単なる "4×4マトリックスコア "だと思いますが、NVIDIAのマーケティングチームは "テンソルコア "を使うことを選択しました。
テンソルコアの全容をわかりやすく解説
GPUカード | CUDAコア | ブイラム |
---|---|---|
GeForce GTX 1660 Ti | 1536 | 6GB |
GeForce GTX 1660 Super | 1408 | 6GB |
GeForce GTX 1660 | 1408 | 6GB |
GeForce GTX 1650 Super | 1408 | 4GB |
GeForce GTX 1650 | 1024と896 | 4GB |
GeForce GTX 1060 3GB | 1280 | 4GB |
GeForce GTX 1650 | 1280 | 3GB |
GeForce GTX 1060 6GB | 768 | 6GB |
GeForce GTX 1050 Ti (3GB) | 768 | 4GB |
GeForce GTX 1050 (2GB) | 640 | 3GB |
GeForce GTX 960 | 1024 | 2GB |
GeForce GTX 950 | 786 | 2GB |
GeForce GTX 780 Ti | 2880 | 2GB |
GeForce GTX 780 | 2304 | 3GB |
GeForce GTX 750 Ti | 640 | 2 GB |
GeForce GTX 750 | 512 | 1GBまたは2GB |
CUDAコアを搭載したGPU
結論
- CUDAとTensorコアは、どちらもNvidiaという会社が開発した製品です。 CUDAはCompute Unified Device Architectureの略で、このCUDAコアは皆さんのGPUやスマートフォン、そして車の中にも存在しています。
- 一方、同じくNvidiaが開発したテンソルコアは、GPUにも採用されています。 テンソルコア」と呼ばれる専用のコアは、混合精度での学習を可能にします。 第1世代のテンソルコアでは、混合精度やFP16の数値フォーマットでの学習が可能になりました。
- これにより、特定のGPUではテラFLOPのスループットが最大12倍向上する可能性があります。 Int8、Int4、Int1がサポートするTensor Coreのプリシジョンリストに加えられました。
- 混合精度のトレーニング手順により、GPUの性能は最大32倍に向上しました。 今後、Hopperマイクロアーキテクチャベースの第4世代テンソルコアのリリースが予定されています。