こんにちは、Zero-Cheeseです。
本記事では、NVIDIA製 GPUの
- CUDAコア
- Tensorコア
- RTコア
に関して、それぞれの役割を、ご紹介いたします。
各コアの役割を、感覚レベルで知りたい方に向けた、記事となっています。
特に昨今、GPUはAI処理(特にディープラーニング)に使われているため、その部分は少し詳細に触れています。
本記事に関連して、AI処理(特にディープラーニング)用として自作PCを組みたい方に向け、注意点等をまとめた記事も公開しています。
ご興味がありましたら、下記までどうぞ。
代表的なNvidia製 GPUスペック
代表的なNvidia製 GPUのスペックを、表にしてみました。
また併せまして、上位GPUの処理速度もご紹介します。
下記グラフの単位は、TFLOPS(テラフロップス)になります。
FLOPSとは、1秒間に小数点の計算が、何回できるかを表しています。(※ 厳密には、浮動小数点演算の計算回数です。)
上図から分かる通り、RTX4090では、1秒間に90兆回分の処理能力があります。
RTX4090は、FLOPSのみで評価すると、2004年時点の世界1のスーパーコンピュータに勝っております。
(現在では、個人でその処理能力が手に入れられます。ホントすごい!!)
各コアの役割
コアとは、GPUの中心部分の事で、実際に演算処理する部分になります。
CUDAコアに関して
元々GPUは、グラフィック表示に特化して、開発されてきました。
特にゲームグラフィックをリアルタイムで表示させるには、単純ですが膨大な計算処理が必要でした。
その高い計算処理能力をグラフィック以外に活用したのが、CUDAです。
CUDAというのは、Compute Unified Device Architectureの頭文字で、Nvidiaによって開発された技術です。
このCUDAコアを、できるだけたくさん、同じGPU上に設置して処理能力を上げています。
下図は、GA102(RTX3090等に採用)の、回路図(正確には、「ブロックダイアグラム」と呼ばれる)です。
ご覧の通り、オレンジに囲んだ部分が、繰り返したくさん並んでいる事が分かります。
このオレンジの部分(SM – Streaming Multiprocessor -と呼ばれる)を拡大したのが、下図となります。
オレンジで囲んだ4つの部分が、CUDAコアです。
CUDAコア 1つ1つは、下記オレンジで囲った中の、さらに灰色で区切られたエリア(半透明で、四角状に区切られてたエリア)です。
上図のFP32とかINT32は、それぞれ32ビットの浮動小数点と、32ビットの整数演算処理に特化した演算処理回路になっています。
「小数点の計算と、整数の計算回路があるんだな」位の理解で大丈夫です。
つまり、少数点や整数の計算など単純な処理を、数千個以上のコアにより、一度に処理する事を可能としています。
一方CPUは、複雑な演算処理を得意としますが、コア数は多くても数十個程度です。
よって、CPUとGPUが協力することで、効率良く処理する事が可能となります。
例えば、
- コード中のfor文を使った「単純な繰り返し処理」は、GPUに処理させて、
- if文等の「条件分岐等の複雑な処理」はCPUが処理するなど、
GPUとCPUのいい所取りで、全体の処理速度を向上させる事ができます。
Tensorコアに関して
特にディープラーニングやビッグデータ等に特化した演算処理を、高速で行う事ができる演算回路です。
回路図で見てみると、下記オレンジで囲った部分が、Tensorコアになります。
ディープラーニングでは、行列どうしの掛け算に、行列を足すという処理が数多く存在します(行列の積和演算と呼ばれています)。
その機能に特化した演算機能を持っており、具体的には、下記計算を1サイクルで処理できます。(第1世代 Tensorコアの説明資料より抜粋。)
第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を選定をするにあたり、本内容が少しでも役にたったら幸いです。
本記事も、最後まで読んで頂き、ありがとうございました。
それではまた、お会いしましょう!