Pythonスキルの習得

【NVIDIA GPU】CUDAコア、Tensorコア、RTコアの違い – ディープラーニング処理への影響 –

【NVIDIA GPU】CUDAコア、Tensorコア、RTコアの違い - ディープラーニング処理への影響 -

こんにちは、Zero-Cheeseです。

本記事では、NVIDIA製 GPUの

  • CUDAコア
  • Tensorコア
  • RTコア

に関して、それぞれの役割を、ご紹介いたします。

各コアの役割を、感覚レベルで知りたい方に向けた、記事となっています。

特に昨今、GPUはAI処理(特にディープラーニング)に使われているため、その部分は少し詳細に触れています。

本記事に関連して、AI処理(特にディープラーニング)用として自作PCを組みたい方に向け、注意点等をまとめた記事も公開しています。

ご興味がありましたら、下記までどうぞ。

ディープラーニング 自作PC に必要なスペックと注意点、おすすめパーツのご紹介
ディープラーニング 自作PC に必要なスペックと注意点、おすすめパーツのご紹介ディープラーニング用の自作PCとして、必要なスペック、注意点、オススメのパーツを紹介した記事です。...

代表的なNvidia製 GPUスペック

代表的なNvidia製 GPUのスペックを、表にしてみました。

また併せまして、上位GPUの処理速度もご紹介します。

下記グラフの単位は、TFLOPS(テラフロップス)になります。

FLOPSとは、1秒間に小数点の計算が、何回できるかを表しています。(※ 厳密には、浮動小数点演算の計算回数です。)

※ FP32処理時のFLOPS値

上図から分かる通り、RTX4090では、1秒間に90兆回分の処理能力があります。

RTX4090は、FLOPSのみで評価すると、2004年時点の世界1のスーパーコンピュータに勝っております。

(現在では、個人でその処理能力が手に入れられます。ホントすごい!!)

各コアの役割

コアとは、GPUの中心部分の事で、実際に演算処理する部分になります。

CUDAコアに関して

元々GPUは、グラフィック表示に特化して、開発されてきました。

特にゲームグラフィックをリアルタイムで表示させるには、単純ですが膨大な計算処理が必要でした。

その高い計算処理能力をグラフィック以外に活用したのが、CUDAです。

CUDAというのは、Compute Unified Device Architectureの頭文字で、Nvidiaによって開発された技術です。

このCUDAコアを、できるだけたくさん、同じGPU上に設置して処理能力を上げています。

下図は、GA102(RTX3090等に採用)の、回路図(正確には、「ブロックダイアグラム」と呼ばれる)です。

ご覧の通り、オレンジに囲んだ部分が、繰り返したくさん並んでいる事が分かります。

出典:https://www.4gamer.net/games/527/G052743/20200911024/

このオレンジの部分(SM – Streaming Multiprocessor -と呼ばれる)を拡大したのが、下図となります。

オレンジで囲んだ4つの部分が、CUDAコアです。

CUDAコア 1つ1つは、下記オレンジで囲った中の、さらに灰色で区切られたエリア(半透明で、四角状に区切られてたエリア)です。

出典:https://www.4gamer.net/games/527/G052743/20200911024/

上図のFP32とかINT32は、それぞれ32ビットの浮動小数点と、32ビットの整数演算処理に特化した演算処理回路になっています。

「小数点の計算と、整数の計算回路があるんだな」位の理解で大丈夫です。

つまり、少数点や整数の計算など単純な処理を、数千個以上のコアにより、一度に処理する事を可能としています。

一方CPUは、複雑な演算処理を得意としますが、コア数は多くても数十個程度です。

よって、CPUとGPUが協力することで、効率良く処理する事が可能となります。

例えば、

  • コード中のfor文を使った「単純な繰り返し処理」は、GPUに処理させて、
  • if文等の「条件分岐等の複雑な処理」はCPUが処理するなど、

GPUとCPUのいい所取りで、全体の処理速度を向上させる事ができます。

Tensorコアに関して

特にディープラーニングやビッグデータ等に特化した演算処理を、高速で行う事ができる演算回路です。

回路図で見てみると、下記オレンジで囲った部分が、Tensorコアになります。

ディープラーニングでは、行列どうしの掛け算に、行列を足すという処理が数多く存在します(行列の積和演算と呼ばれています)。

その機能に特化した演算機能を持っており、具体的には、下記計算を1サイクルで処理できます。(第1世代 Tensorコアの説明資料より抜粋。)

出典:https://h50146.www5.hpe.com/events/seminars/info/pdfs/hp-cast2018/A-3-GPU-computing-nowadays-supporting-HPCandAI-download.pdf

第1世代では、16bit浮動小数点(FP16)用の行列演算回路になっていました。

第2、第3世代と進むにつれ、FP32やFP64、INT8と様々な型に対応しています。

上記の説明、理解できなかった方は、無視して頂いて大丈夫です。

公式のサイトによると、最新のNVIDIAアーキテクチャーにおいては、

  • FP8(8ビット浮動小数点)
  • FP16
  • TF32(FP32と同じ精度で、最大20倍の処理が可能)
  • FP64
  • INT8

に対応しており、Transformer Engineも搭載しています。

Transformer Engineとは、Transformerモデルのトレーニングを高速化させるための、演算回路です。

Transformerモデルを知らない方、ごめんなさい。

2022年現在、「凄い成績を叩き出している、ディープラーニングモデル」位の解釈で大丈夫です。

Tensorコアは、ここまで説明してきた「積和演算能力」はCUDAコアより優れていますが、CUDAコアみたいな「汎用的な計算処理機能」は持ってません。

RTコアに関して

レイトレーシングを、高速で処理する事を目的とした、ハードウェアアクセラレータです。

下記部分が、RTコアになります。(第2世代の回路になりますが・・)

レイトレーシングとは?

精彩な 3D 描画を行うために、「人間の目に入った光の経路を逆にたどる」シミュレーションを実施する「レンダリングアルゴリズム」です。

具体的には、スクリーンの各ピクセルからレイ(光線)を飛ばし、物体に衝突すると、色の情報を計算します。

またその物質が、反射や屈折を起こす設定になっていると、そこから新たにレイ(光線)を飛ばして、同じ繰り返し処理を致します。

この処理において、レイ(光線)と物体の衝突判定には、恐ろしい計算量が発生します。

この衝突判定処理に特化した回路が、RTコアとなります。

さいごに

本記事では、感覚レベルで

  • CUDAコア
  • Tensorコア
  • RTコア

の役割を、ご紹介してきました。

今後、GPUを選定をするにあたり、本内容が少しでも役にたったら幸いです。

本記事も、最後まで読んで頂き、ありがとうございました。

それではまた、お会いしましょう!