CUDAコアとTensorコアは何が違うのか(解説) - All The Differences

 CUDAコアとTensorコアは何が違うのか(解説) - All The Differences

Mary Davis

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 Differences

2012年頃、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世代テンソルコアのリリースが予定されています。

その他の記事

    Mary Davis

    Mary Davis は、さまざまなトピックの比較分析を専門とするライター、コンテンツクリエーター、そして熱心な研究者です。ジャーナリズムの学位を取得し、この分野で 5 年以上の経験を持つメアリーは、偏見のない率直な情報を読者に届けることに情熱を持っています。彼女の書くことへの愛情は幼い頃から始まり、それが彼女の執筆活動での成功の原動力となっています。メアリーは、調査し、その結果をわかりやすく魅力的な形式で提示する能力により、世界中の読者に愛されています。執筆以外の時間は、メアリーは旅行、読書、家族や友人との時間を楽しんでいます。