Turingコアの構造も謎の指標「RTX-OPS」の計算方法も明らかに!徐々に見えてきたGeForce RTX 20シリーズの全貌

Turingコアの構造も謎の指標「RTX-OPS」の計算方法も明らかに!徐々に見えてきたGeForce RTX 20シリーズの全貌

  • ASCII.jp
  • 更新日:2018/09/15
No image

「リアルタイムレイトレーシング」というCG界の“聖杯”を手にすれば、今までの「ラスタライズ法」では困難だった表現も容易に実装できるという。この聖杯にいち早く手をかけたのは、新アーキテクチャー「Turing」をベースにした「GeForce RTX 20シリーズ」を生み出したNVIDIAだ。

8月にドイツはケルンで催されたスペシャルイベント「GeForce Gaming Celebration」にて初めてRTX 20シリーズがお披露目されたが、その直後にプレス関係者向けの説明会「Editor's Day」が設けられ、さらに深いレベルでの話を聞くことができた。

本日(9月14日)情報が解禁されたので、前回の記事「CG界の聖杯「リアルタイムレイトレーシング」に手をかけたGeForce RTX 20シリーズを理解する」【前編】【後編】お伝えできなかったことや後から判明したことを含め、RTX 20シリーズの技術的側面について深掘りしてみたい。

フルスケールな「TU102」コアの構成

まずはTuringコアの構造から眺めていこう。「GeForce RTX 2080 Ti」のコアは「TU102」、「GeForce RTX 2080」が「TU104」、そして「GeForce RTX 2070」は「TU106」と、それぞれ別の設計が用意されている。

Pascal世代であるGTX 1080と1070はどちらも同じGT104から生まれた製品であり、末尾「6」の製品はミドルレンジ向け(この場合はGTX 1060)であったことを考えると、今後GeForce RTX 2060が出るとすれば「TU107」になるのだろうか?

まずは“フルスケール”なTU102のダイアグラムをチェックしてみよう。まず、SM(Streaming Multiprocessor)あたりCUDAコアは64基、Tensorコアは8基、RTコアが1基ずつ配置される。CUDAコア数はPascal世代から半減したが、FP32とINT32用の演算機の2つで1カウントになっていること、Tensorコア8基の存在などから、Voltaの発展形であることが読み取れる。

Turingダイ内部の回路。どの部分がどの機能かは明言されていないが、中央上下がL2キャッシュ、その左右に無数に見えるパターンがSMと考えてよいだろう。

1番大きな改善はFP32とINT32の演算機を分割したことだ。ゲームのシェーダー処理においては、FP32とINT32の処理が混在している。Pascal世代までのアーキテクチャーでは、SM内でINT32の処理を実行している際、アイドル状態のCUDAコアがあってもFP32の処理をさせることはできなかった。

だが、Turing(とVolta)ではFP32とINT32のデータパスを分けることで、両者の処理を並列で捌けるようになる。ゲームによってINT32ラインの使われ方は異なるが、NVIDIAは10~50%のスループット向上を見込めるとしている。

ちなみにVoltaではFP64用のユニットがSMあたり32基搭載されていたが、TuringではSMあたり2基、演算性能にしてFP32の32分の1のスループットになっている。これについて、NVIDIAはFP64を減らしたことで「どんなプログラムでもFP64コードを正しく実行できるようになる」と説明している。

そして、Volta世代とTuring世代の最大の違いは、SM1基ごとにRTX 20シリーズの核心技術、RTコアが搭載されていることだ。このRTコアの役割については後ほど詳しく解説することにしよう。

No image

フルスペックTU102のブロック図。RTX 20シリーズに先立ち発表された「Quadro RTX 8000」はこのような構造になっている。

No image

公式スペックをベースにしたRTX 2080 Tiのブロック図(筆者による想像)。SM4基、メモリーコントローラー1基が無効化されていると推測される。無効化された回路の位置は実物と異なる可能性がある。

No image

Turing世代のSMの構造。CUDAコアはFP32とINT32に分割され、各々16基+Tensorコア2基がスケジューラーで形成した小クラスターが4つ。そこにRTコアなどを追加したものでSMとして運用される。図にはFP64の演算機は省略されているが、SMあたり2基組み込まれている。RTコアの背景に意味深なアイコンが描き込まれているが、それは後ほど解説しよう。

No image

Volta世代のSMの構造。FP32とINT32を分割することで、両演算を並列処理できるのはこの世代から。FP64の演算機が32基あること、L1データキャッシュ(共有メモリー兼用)の量が微妙にTuringより多いなど、TuringはVoltaの完全上位ではない点に注目。

No image

Pascal世代のSMの構造。この世代のCUDAコアはINT32演算もできるが、基本はFP32演算に特化した設計だ。また、SM単位で共有されるL1キャッシュと共有メモリーが独立している。

No image

FP32とINT32の演算機を分けることで、2種類の演算を並列処理できるようになる。上の図は各PCゲームタイトルにおいて、FP32処理の割合を1とした時、INT32の処理がどれだけあるかを示したもの。グラフ中の濃い緑の部分がFP32と並列処理できるようになることで得られるメリット。

Turing世代ではキャッシュの階層にも大きな手が入った。PascalではSM内にL1キャッシュ48KB、それとは別に96KBの共有メモリー、そしてGPU全体で共有する3MBのL2キャッシュという構造を採用していた。これに対しTuringでは、SM内にL1キャッシュ兼共有メモリーが96KB、そしてGPU全体で共有する6MBのL2キャッシュという構成になった。

この新しい共有メモリーでは、L1キャッシュを最大64KBまで拡大できるので、L1キャッシュへのヒット率が高まる。また、L1キャッシュのレイテンシーを低減、さらにSM内のロード&ストアユニットへの帯域も従来より太くなっている。ゲームエンジンの設計にもよるが、このL1キャッシュの変更はパフォーマンスに大きく寄与する、とNVIDIAは謳っている。

No image

Pascal世代とTuring世代のキャッシュ構造の違い。TuringではL2が倍増したほかに、L1キャッシュと共有メモリーが合体した新しい共有メモリーを採用。分量は柔軟な可変式なのかモード切り替え式なのか明言されていないが、典型的なゲームの処理ではL1を64KB、共有メモリーを32KBにする処理が多く、コンピュートタスクでは逆にL1を32KBに絞って共有メモリーを64KBで使うことが多いという。

No image

L1キャッシュと共有メモリーの合体により、特にL1キャッシュのスループットが向上し、レイテンシーは低減。ゲーム側の処理にもよるが、実ゲームでシェーダーの性能がおよそ1.6倍に伸びる(VRMarkなら2倍強)と謳っている。

「TU104」及び「TU106」コアの構成

そして、TU104及びTU106のダイアグラムもお見せしよう。TU106はTU104のハーフモデルといったところだが、NVLinkのインターフェース自体が削除されている点に注目したい。

TU102ベースのRTX 2080 Tiのダイアグラム(再掲)。

No image

TU104ベースのRTX 2080のダイアグラム。GPC(Graphics Processing Cluster)6基構成は共通だが、内包するSMの数が8基に減らされ、メモリーコントローラーも8基(32bit×8=256bit)になっている。

No image

TU106ベースのRTX 2070のダイアグラム。TU104のGPCやL2キャッシュはそれぞれ半減している。さらに、NVLinkのインターフェースを除去した格好だ。

GDDR6メモリーとメモリー圧縮技術

VRAMは単に画面に出力するデータの置き場所だけでなく、GPU内で走るシェーダーや、それが扱うデータなど、描画処理に使う様々な情報の置き場所である。つまり、VRAMとGPUのやり取りにモタつきが起これば、描画処理全体の足をひっぱる。特に液晶ディスプレーが高解像度化するほど、描画処理が複雑になるほど、VRAMのスループットが重要視される傾向にある。

そのスループット問題を解決されると思われていたHigh Bandwidth MemoryことHBMだったが、蓋を開けてみれば配線(特に貫通ビア)が難しく、歩留まりの悪化とコストアップを招いてしまったのはライバルAMDのR9 Fury~RX Vegaの現状を見ればわかる。NVIDIAもTITAN VなどでHBM2を採用しているが、RTX 20シリーズではコストや実装効率の良い「GDDR6」を選択した。

GDDR5Xを1世代で捨てGDDR6に移行した理由は明らかにされていないが、GDDR6は18GHz(相当)までをターゲットにしており、将来性があることとがひとつ。そして、GDDR5Xはメモリーアクセス時の粒度(Granularity)が大きいという点が理由ではないかと思われる。

GPUの描画処理においては、1回に32B(バイト)程度の小さなデータをメモリーから取り出すことが多い。だがGDDR5Xは、1回のアクセスで64B単位でしか取り出せない。つまり、粒度が大きいので効率が悪いのが弱点となる。一方で、GDDR6ではGDDR5と同じ32B単位で取り出せるので効率が良いのだ。

RTX 2080 Tiではメモリークロックは14GHz相当とクロックも上がるため、メモリー周りの回路設計には相当な労力が割かれている。次の図はGDDR6の“アイ”パターンと呼ばれるものだが、Pascal初出時のGDDR5X、GTX 1080 Tiと同時に発表された11GHz版GTX 1080におけるメモリーのアイパターンを比べてみると、GDDR6のアイパターンのほうが中央に大きな“目”のように見える空間が目立つ。このアイパターンの大きさこそが、RTX 20シリーズのVRAMスループットを支えているのだ。

No image

GDDR6のアイパターン。中央に見える目のような部分が大きく、輪郭のように見える部分の線(実際は波形の集合)が細いほど、信号が良質であることを示す。図はアイパターン1つぶんの時間が70ピコ秒、つまり14GHzであることを示している。

No image

これは11GHz版のGTX 1080発表時にNVIDIAが公開したデータ。左が10GHz時代のGDDR5Xメモリーを11GHz動作させた時のアイパターンで、輪郭がボヤけており、アイパターンの開口部も小さい。様々な改良により11GHzのGDDR5Xを達成した時のアイパターンが右(左右の幅は90ピコ秒、11GHz)となる。

メモリーがクロックが11GHzから14GHzに向上すれば、メモリー帯域は単純計算で27%程度向上する。メモリーバス上を流れるデータをもっとコンパクトにすれば、さらにスループットを稼ぐことができる。Maxwell~Pascalでもメモリー圧縮技術は重要なトピックだったが、TuringではPascalのメモリー圧縮技術をさらに改良したものが搭載された。

具体的な技法については明らかにされていないが、RTX 2080 TiとGTX 1080 Tiを比較した場合、有効帯域が約50%増加。つまり、データ量をほぼ半減させることに成功している。もちろん、データ圧縮効果についてはゲームにより異なるが、単純なメモリー性能の向上ぶんに上積みする形でメモリー圧縮技術が効いてくる。特にWQHDや4K、8K環境での効果が期待できるだろう。

No image

GTX 1080 Tiを基準にした時、RTX 2080 Tiのメモリーシステムがどれだけ帯域を向上させたかというグラフ。濃い緑の部分はメモリークロックの向上ぶん。薄い緑の部分はメモリー圧縮効果であるため、ゲームやベンチマークの種類によって効果が異なる。両者を合わせれば、GTX 1080 Tiの約1.5倍のメモリースループットが得られるということだ。

レイの衝突判定処理が専門の回路「RTコア」

RTX 20シリーズの最強武器であるリアルタイムレイトレーシングは、計算量が余りにも多いため従来設計のGPUでは実装することが難しい。事実、NVIDIAがGTC 2018でリアルタイムレイトレーシング技術(RTX)を発表した際は、Tesla V100を4枚搭載したモンスターPC「DGX Station」を準備し、力押しでようやく24fpsの映像を作り出していた。この処理を1GPUで実施するには、専用のハードウェアアクセラレーターが必要になる。つまり、RTコアという訳だ。

RTコアの仕事は2つある。レイトレーシングでは、描画したい3D画像の視点(カメラ)から画面の各ドットを通過するように仮想的な光線、すなわち“レイ”を放つ。レイが何かポリゴンに当たれば、これに影響する光源の情報などを用いて色の計算ができる。また、反射や屈折を起こすような素材が設定されていれば、その場所からレイを投げて次に当たるポリゴンを求めていく。つまり、カメラに届く光が届く道のりをレイを飛ばして調べることで映像を作っていくのだ。

レイトレーシングでは放ったレイが「どのポリゴンに衝突したか」を調べる処理が無数に発生する。レイの反射や屈折などを完全に無視しても、フルHD/60fpsの映像をレンダリングするには最低でも1億2441万6000回(1920×1080×60)のレイの処理。つまり、毎秒約124Mega Rays(メガレイ)ぶんの「レイの衝突判定」が発生するわけだ。もちろん、レイの反射・屈折などがあればそこから新たなレイが放たれるため、1秒間に必要なレイの計算は加速度的に増えていく。

RTX 20シリーズに搭載されたRTコアは、レイの衝突判定処理を専門に処理する回路だ。しかし、単純に全ポリゴンの頂点情報を衝突判定にかけるという処理では間に合わないので、「レイに衝突しそうなポリゴンをすばやく絞り込む」テクニックが必要になる。

そこで、RTコアではシーンに配置されたポリゴンを「BV(Bounding Volume)」という大きなブロックの塊で包んでおく。レイが発射されると、どのBVを通過するかチェックする。BVの中にはさらに小さなBVが詰め込まれているので、レイが中のBVのどれに当たるかをチェック。このBVの階層構造の終着点に達すると、レイが衝突したポリゴンの座標データを得られる。階層化されたBV、すなわち「BVH(Bounding Volume Hierarchy)」の中から、レイが衝突するポリゴンのデータを超高速で取り出すのが、RTコアの役目なのである。

No image

BVHを用いたレイの衝突判定の仕組み。ウサギのオブジェクト内のどのポリゴンにレイが衝突するかを判定する場合は、まず最外殻にあるBVのどれを通過するのか調べる(Step1)。最初のBVの外にあるデータはこの時点で処理の対象から消え去る。続いてStep2→Step3で最初のBVの中にある小さなBVのどれをレイが通過するのか……と繰り返していくと、最終的にレイが衝突するポリゴンが見つかる(Step4)。

RTコアは大きく2つのユニットで構成されている。1つはレイがどのBVを通過するのかを検出するユニット。そしてもう1つは、レイとポリゴンの交差を検出するユニットである。視点Aから画面上のドットBに向かってレイの発射を行なうのはCUDAコアだが、一度そのデータがRTコアに渡ると、一瞬でRTコアがレイに衝突するポリゴンをサーチ。その結果をCUDAコアに返すという流れになる。

もちろん、この処理をCUDAコアだけで処理することは可能だが、BVの絞り込みもレイとポリゴンの衝突判定にも1レイあたり凄まじい命令を消費することになる。Pascal(GTX 1080 Ti)のCUDAコアでは1Giga Raysあたり10TFLOPSの計算パワーが必要になる。そして、GTX 1080TiのFP32性能は11.3TFLOPSなので、毎秒1.13Giga Raysの処理“しか”できない。

しかし、Turing(RTX 2080 Ti)では、68基のRTコアで毎秒10Giga Rays以上の処理ができる。NVIDIAがケルンの特別イベントで「(RTX 2080Tiが)GTX 1080Tiの10倍の性能」と謳っていたのは、この計算が下地になっているのだ。

No image

Pascal世代のGPUでRTコアの仕事をさせようとする場合、レイの衝突判定処理(黄色の部分)だけで数千命令を消費してしまうため、とてもリアルタイムの描画にはならない。ソフトウェア・エミュレーションの限界なのだ。

No image

Turingではレイの発射データをCUDAコアからRTコアに渡すと、まずレイがどのBVを通過するのかを調べ、さらに内部のBVへと通過判定を進める(Box Insertion Evaluators)。BVの最深部にあるポリゴンに到達すると、今度はレイが実際にポリゴンに衝突しているのかを判定する。黄色の部分が専用ハードウェアで高速処理できるのがTuringの大きな強み。

No image

Pascal(グラフでは濃い緑)とTuring(明るい緑)では、1秒あたりに処理できるレイの数に大きな隔たりがある。レンダリングする対象が複雑になればなるほど処理するレイの数は増えていくが、レイトレーシングにおいてTuringはPascalの10倍のパフォーマンスを発揮できる、としている。

レイを飛ばして衝突するポリゴンを見つけ、必要とあらばさらにレイを飛ばす……という技法にも当然限界はある。1つは現実世界と同じ光源の計算をしようとすると、パワーが足りなくなる問題。

下はレンダリング処理時間を計測するベンチマークソフト「LuxMark」でレイトレーシングを実行した時の画面の変化。最初の頃は画面全体にノイズが乗ったような結果にしかならないが、時間をかけて何回も処理することで次第にノイズの少ない画像に集束してゆく。

ただし、リアルタイムレイトレーシングではここまで手間をかけられない。ではこれをどうするのか? 少数のレイの処理でできたノイジーな画像からノイズを除去する処理(デノイズ:Denoise)を加えることで、レイの処理を最小限に切り上げつつ高クオリティーな映像を生成するのである。

No image
No image

「LuxMark」によるCGレンダリングの例。処理を始めた当初は砂嵐がかかったような映像しか得られないが、時間をかけ繰り返し処理するとだんだん普通の映像に近づいていく。だがこれと同じことをPCゲームでやるわけにはいかない。

このデノイズ処理はAIベースなものと、非AIベースなものがあり、プログラム側で選択できるようになっている。だが本命は前者、つまりTensorコアを利用したデノイズ処理といったところだ。RTXにおいてAIとレイトレーシングは表裏一体と言うべき存在なのである。

ただ現時点では、AIベースと非AIベースでデノイズ処理にどのような性能差が出るかは示されていない。今後の情報を待ちたいところだ。

AIでアンチエイリアスを高効率化

RTXテクノロジーを支えるのはRTコアのほかに、Voltaから継承したAI処理向けのTensorコアがある。レイトレーシングのデノイズ処理にも利用できる部分だが、NVIDIAはTensorコアとDNN(ディープ・ニューラル・ネットワーク)を組み合わせたAPI「NGX(Neural Graphics Acceleration)」を投入してきた。NGXはTuringでのみ動作するテクノロジーでもある。

NGXはTuringベースのGPUとドライバー、そしてGeForce Experience(GFE)の三者が揃って初めて機能する。Tensorコアを備えたTuringベースのGPU、そしてNVIDIAのスパコンで学習したデータを盛り込んだGeForce用ドライバーが揃った環境であることをGFEが検知すると、NGXがインストールされる。

GFEを必要とする理由は、NGXの機能を使うにはゲームやアプリごとの個別学習データが必要であり、それを判断する役目をGFEに負担させているのだろう。

No image

NGXで提供される「Inpainting」、つまり写真から電線を削除したり、欠損したイメージから元のイメージを推察して復元したり、といったものだ。

No image

NGXで提供される超解像処理「AI Super Rez」。普通に画像を拡大するとドット感が出てしまう(図左及び中央)が、DLSS(後述)を使って処理するとより自然なアウトプットが得られる。30fpsのフルHD動画もリアルタイムで4Kアップスケーリングが可能なほど高速。

NGXが提供する機能の中で最もゲーミングに近い技術はディープラーニングを利用した新しいアンチエイリアス技法「DLSS」、すなわちDeep Learning Super Samplingだ。

従来のアンチエイリアス技法には、軽快だがアラを見つけやすい「FXAA」、高解像度でレンダリングした画像を縮小表示するので重い「SSAA」、SSAAを改良した「MSAA」、そして前フレームの情報も加味した高性能な「TAA(TXAA)」、といったものがある。

高性能なアンチエイリアスはジャギーが目立たなくなるぶんVRAMの消費量が多かったり、GPU自体への負荷も高いというデメリットも出てくる。そこをDNNとTensorコアを利用して解決しようというのがDLSSだ。

具体的にはDLSSゲームのレンダリング結果を、NVIDIAのスーパーコンピューターを用いて機械学習させる。この時の学習イメージはPC上よりもずっと高い解像度(64xのSSAA相当)でレンダリングされ、機械学習で言うところの真の正解、いわゆる“Ground Truth”なイメージになる。

この真の正解と、実際に64x SSAAでレンダリングさせた結果を突き合わせ、ベストなアンチエイリアスのかけ方を学習させていく。この学習結果がドライバーを通じてRTX 20シリーズ搭載PCに送り込まれるのだ。

DLSSは映像のクオリティー低下を最低限に抑えつつも、TAAよりも軽快に動作する、ということを売りにしている。4K環境でTAAを使う時よりも、DLSSのほうが2倍のパフォーマンスが出せる。あるいはTAAではディテールが崩れてしまうようなシチュエーション(前フレームとの差を見ながら処理をするため、輪郭が崩れるのは避けられない)でも、崩れずに高品位なアンチエイリアス画像が得られる。

No image

ゲームをDLSS対応にするには、超高解像度でレンダリングした画像と、同じシーンで超高設定のSSAAをかけた画像を突き合わせ、どのようにアンチエイリアスをかければGround Truthイメージに近くなるかをディープラーニングさせる。その結果がAIモデルとなり、ドライバーに組み込まれてユーザーの元に届けられるのだ。

No image

左が64x SSAA、つまり本来解像度の64倍でレンダリングしたものを縮小してアンチエイリアスとしたもの。右が2x DLSS。DLSSならアンチエイリアスの設定が低くても、超高SSAA設定と同等の画質が得られるらしい。ちなみにこれはUE4で作られた「Infiltrator」というデモのからの引用だ。

No image

TAAとDLSSの比較。TAAでは細かいディテールが潰れてしまうが、DLSSならそれを損なわずに表現できる。

No image

GTX 1080 TiでTAAをかけた状態と、RTX 2080 TiでDLSSをかけた状態(解像度は4K、AAの設定値は不明)。TAAでは動きのある物体の輪郭が崩れて表示されることがあるが、DLSSでは崩れが発生しない。DLSSを使ったRTX 2080 Tiは、4K環境でGTX 1080 Tiの2倍のフレームレートが出せるという。

No image

TAAはHUDのような表現でボロが出やすい反面、DLSSなら表示の崩れもなく高クオリティーなアンチエイリアスになる。

アンチエイリアスの比較になぜTAAを持ち出すのか? と疑問を持つ人もいることだろう。

最近のゲームでは軽快なFXAAがデフォルトになっていることも多いし、SSAAやMSAAはGPUの負荷が高い。TAAはNVIDIAがKeplerから導入した技術なので手前味噌感もあるが、MSAAより高画質というメリットがある。かつてNVIDIAは(主観的な評価ではあるが)TAA2x TAAでも8x MSAAより高画質と言っていたので、画質はMSAA<TAA<DLSSという序列になる。

このDLSSを使うにはゲーム側もDLSSに対応する必要がある(ゲームごとにDLSS用の学習データが異なるためでもある)。DLSS対応ゲームは描画の仕組みそのものを変えてしまうリアルタイムレイトレーシングと違い、ゲーム側でも対応しやすいメリットがある。

ただし、現時点ではリアルタイムレイトレーシングもDLSS対応も区別なく「RTX対応ゲーム」として括られるため、実際にどちらの技術を活用しているかは自分で確認しておく必要があるだろう。

No image
No image

DLSS対応を表明したゲームは本稿公開時点では25タイトル。レイトレーシングと違い、既存のゲームにも組み込みやすいのがDLSSのメリットと言える。

●DLSS対応を表明したゲームタイトル(9月14日時点)
Ark: Survival Evolved
Atomic Heart
Darksiders III
Dauntless
Deliver Us The Moon: Fortuna
Fear The Wolves
Final Fantasy XV: Windows Edition
Fractured Lands
Hellblade: Senua's Sacrifice
Hitman 2
Islands of Nyne
JX3
Justice
KINETIK
Mechwarrior 5: Mercenaries
Outpost Zero
Overkill's The Walking Dead
PLAYERUNKNOWN'S BATTLEGROUNDS
Remnant: From The Ashes
Serious Sam 4: Planet Badass
Shadow of the Tomb Raider
Stormdivers
The Forge Arena
We Happy Few

謎の指標“RTX-OPS”の計算方法が明らかに

さて、RTX 20シリーズが発表されたスペシャルイベントでは「RTX-OPS」なる新しい性能指標が登場した。言うまでもなくRTX独自機能を利用して処理する能力を比較するためのものだが、RTX 2080 Tiが78T RTX-OPS、RTX 2080が60T RTX-OPS、そしてRTX 2070が45T RTX-OPSとされている。

78T RTX-OPSなら、1秒間に“RTX-OP(RTXの処理)”を78兆回実行できることを示す(ちなみに78TのTの読みはテラが正式のようだ。ジェンスン・ファン氏はTrillionと読んでいたが……)。

ではそもそもRTX-OPSとは何を指しているのか? 既存のGTX 10シリーズは一体何RTX-OPSなのかも解説しておきたい。

1)ハイブリッドレンダリング

RTX 20シリーズで初めてリアルタイムレイトレーシングがハードウェア的に実装されたわけだが、ゲームはもちろんOS(正しくはAPIレベルだが)もレイトレーシングに対応する必要がある。

現在RTX 20シリーズはNVIDIA独自のAPI「OptiX」のほかに「Vulkan」、そしてWindows10のOctober 2018 Updateで盛り込まれる予定のDirectX Raytracingこと「DXR」に対応する。RTX 20シリーズ発売時点でレイトレーシング対応ゲームがないのも無理からぬ話だ。

No image

RTXテクノロジーを構成する要素。1番下がRTX 20シリーズ独自のハードウェアで、RTコアを使ったレイトレーシングのほかに既存のCUDAコアによるラスタライゼーション、AIなどがあり、それらの機能はDXRなどのAPIを通じて行なわれる。そして、DXRやVulkanなどのへアセットデータを渡す規格が1番上のMDL(Material Definition Language)となる。

今後はゲームをこれらの機能をフル活用して作る体制を整えるというのがNVIDIAの戦略だが、レイトレーシングとラスタライゼーションはお互いの良いところを両立させながら使っていくことになる。RTコアで捌けるレイの数には限界がある今、ゲームのすべてをレイトレーシングで構築するのは無理だからだ。

この2つの手法を併用してレンダリングするのを“ハイブリッドレンダリング”と呼ぶが、Turingを使って1フレームをハイブリッドレンダリングした時にどのコアがどの程度働くかを示したのが次の図だ。

No image

Turingでハイブリッドレンダリングを行なった時の各処理がどの程度の割合かを大雑把に見積もったもの。長いほど時間を取られる処理であることを示すが、当然ゲームによりこの長さは変化する。「いろんな処理をさせてみたところ、こんな塩梅になることが多い」ぐらいに考えておきたい。

2)各コアの仕事量

上の図では、まずRTコアでレイの衝突判定と、CUDAコアの内FP32演算機でジオメトリシェーダーやピクセルシェーダーといったゲームではお馴染みの処理が並列して動く。RTコアの処理時間は、FP32の処理時間のおよそ半分程度になるようだ(※1)。

RTコアでレイトレーシング処理が終わると、今度はCUDAコアの内INT32演算機でテクスチャーなどの処理が実行される。FP32とINT32の処理時間比はおおよそ100:35に落ち着くことが多いようだ(※2)。前述の通り、TuringはFP32とINT32の演算機が分けられているため、両者は並行して処理を進められる。

最後はDNN、Tensorコアでディープラーニングを利用した処理が行なわれる。ここではDLSSを使った処理が想定されているようだ。これは全体の処理時間の20%程度を占める(※3)。

つまり、RTX-OPSとは、上のような「典型的な“Turingでのハイブリッドレンダリング1フレームぶん”の仕事をさせた時の各部の仕事量の総和」を示すものだ。FP32/INT32/RTコア/Tensorコアそれぞれの仕事量(係数)と各コアのピーク演算性能を掛け、それの合計を求めればよい。

3)実際の計算

では上の図から掛け合わせる係数を求めてみよう。RTX 20シリーズのホワイトペーパーによると、係数は次のように求めるとある。

・CUDAコア:FP32演算性能の80%+INT32演算性能の28%……(1)
・RTコア:RTコアの演算性能の40%……(2)
・Tensorコア:Tensorコアの演算性能の40%……(3)

さらにわけのわからない数値が出てきた。まず最後Tensorコアの処理が全体の約20%(前述※3)を占めるのだから、FP32の仕事量は差し引き80%、そして、FP32とINT32の仕事比は100:35(前述※2)だから、INT32の仕事は80%の35%なので28%(1)となる。そして、RTコアの仕事量はFP32の半分だから、80%の半分で40%(2)。正直なところ何がどういう理屈なのかさっぱりだが、実際にこうホワイトペーパーに書いてあるので、そのとおりに計算してみよう。

例として、RTX 2080 Ti Founders EditionのRTX-OPSを計算する。

・FP32の演算性能=14.2TFLOPS
14.2T×0.8=11.36T RTX-OPS

・INT32の演算性能=14.2TIPS
14.2T×0.28=3.98T RTX-OPS

・Tensorコアの演算性能
113.8T×0.2=22.76T RTX-OPS

・RTコアの演算性能(10GigaRays=100TFLOPS)
100T×0.4=40T RTX-OPS

最後のRTコアの演算性能の計算は、RTコアの処理をPascalでソフトウェア・エミュレーションをさせた時にFP32の演算性能10TFLOPSで1Giga Raysという結果をベースにしている。RTX 2080 Ti Founders EditionのRTコアは10Giga Raysなので、100TFLOPS相当というわけだ。ともあれ、これらの結果を合算すると次のようになる。

・合計 11.36T+3.98T+22.76T+40T=78.1T RTX-OPS

若干の端数は出たが確かにRTX 2080 Ti=78T RTX-OPSという結果が得られることが確認できた。RTX 2080や2070も同様に計算できる。

では既存のRTX 10シリーズではどうか……というと、RTX-OPSの正しいところは計算できない、というのが正しい答えだ。Pascal世代のGPUにはINT32演算機がないため、CUDAコアでゴリゴリ計算するが、INT32の計算中はFP32の計算ができない。さらにRTコアもCUDAコアによるソフトウェア・エミュレーションになるため、ここでもFP32の計算とは並列化できない。

ゆえに、RTX-OPSを求めたくてもコアの設計が古すぎてハイブリッドレンダリングを意味有るスピードで並列処理できないので、RTX-OPSは求めたくても求められない、ということになる。

ただし、これはあくまでRTコアやTensorコアを駆使するハイブリッドレンダリングの時の性能であって、従来型のゲームではほぼ意味をなさない指標であることは強調しておきたい。

No image

各GPUのスペックをもとに、RTX-OPSをホワイトペーパーの通りに計算したところ、スペック表とほぼ同じRTX-OPS値が得られた。

OCとGPU Boost 4.0、そして新機能「NVIDIA Scanner」

RTX 20シリーズではGPU Boostも4.0に繰り上がった。3.0から4.0への具体的な差分についてはまだ明かされていないが、新機能「NVIDIA Scanner」について軽く解説しておきたい。これはGeForceに負荷をかけつつ最適なOC設定を探り出すというものだ。

手動でOCする場合、GPUのクロックを上げて行き詰まったらコア電圧を上げる。そして、ひとつ設定を変えるたびに負荷をかけて安定するかを調べるというサイクルを踏む。

だがNVIDIA Scannerはこの一連の手順を自動化する。負荷をかけつつクロックやコア電圧を調整し、テストに失敗した時は設定を戻すという一連の作業を自動化できる。CPUのOCツールでお馴染みの機能だが、今回NVIDIAは公式にこの機能をサポートした、という点が大きい。

ただし、OCのインターフェース自体はドライバーではなく、今まで通り「EVGA Precision」や「MSI Afterburner」といったツールを経由して実施する。NVDIA Scannerは、OCツール経由でRTX 20シリーズを制御する窓口を作ったに過ぎないのだ。

No image

GeForceのOC、特にPascal以降のOCはクロックとコア電圧で決定される「V-Fカーブ」(VはVoltage、FはFrequency)をどこに置くかで決まる。V-Fカーブをどこに置くかは、これまで手動で探るしかなかった。

No image

NVIDIA ScannerはOC設定を探る手間を軽減してくれる機能だ。コンピュートタスクをゴリゴリ回しながら、エラーが出ないか監視する。エラーが出たらそのOC設定は失敗なので、条件を変えて再挑戦というルーチンが自動化できる。

No image

EVGAの新しいOCツール「X1」を利用したNVIDIA Scannerのデモの様子。左下に描かれているのがV-Fカーブで、青がデフォルトのカーブ。スキャンを開始すると、緑色のラインが徐々に上がっていく。

NVLinkベースのSLIは超高解像度ディスプレー環境向け

RTX 20シリーズでは従来のSLIブリッジにかわり、NVLinkを利用して2−WayまでのSLI環境が構築できるようになった。筆者もまだ動作するNVLink-SLI環境はお目にかかれていないが、8月のスペシャルイベント時点におけるSLIの情報は非常に乏しかったことをまずお断りしておきたい。

今回NVLinkのブリッジコネクターを備えるGPUはRTX 2080 Tiと2080に限定されているが、内部の接続仕様が異なる点に注意したい。RTX 2080のNVLinkブリッジコネクターにはx8のNVLinkが1リンク接続されているのに対し、RTX 2080 Tiは2リンクであることだ。

各リンクは片道25GB/秒の双方向リンクで互いのGPUを接続するため、GTX 2080 Tiのほうが圧倒的にリンクできる帯域が広くなっている。1リンクだろうと2リンクだろうと利用するNVLinkブリッジは1基のみなので、ブリッジアダプターを購入する時はx16スロットの幅だけに注意すればよい。

No image

RTX 20シリーズのFounders Editionにデザインを合わせた、NVLinkベースの純正SLIブリッジ。グラフィックスボードを装着するスロットの間隔に合わせ2種類のモデルが用意されているが、内部の回路構成は同じだ。RTX 2080 Tiのような2リンク構成のボードでも、このブリッジ1つで対応できる。

RTX 20シリーズのSLI環境が想定しているのは超高解像度のディスプレー環境だ。RTX 2080のSLIだと5K液晶(リフレッシュレート75Hz以上)や4K/144Hzのサラウンド環境、あるいは8K液晶となる。そして、2倍の帯域を誇るRTX 2080 TiのSLIは「8Kサラウンド環境に対抗するためのもの」とNVIDIAは定義している。

ただし、NVLinkのSLIは従来通りの欠点も抱えている。サポートされないゲームでは一切効果を発揮しないし、GPUと描画性能がスケールしないゲームもある。また、ゲーム側もNVLinkの帯域を意識するような設計でないと、従来のSLIとほぼ変わらない結果になるようだ。

現状、エンスージアストにとってはやや残念な状況だが、RTX 20シリーズのSLIは謎が多い。いずれ試せる時が来たら、レビューしてみたいものだ。

No image

NVLinkを採用することで2基のGPU間のデータスループット速度は大幅に上昇した。NVIDIAはPascal世代のHB Bridgeは4Kまで、5Kより上のディスプレー環境はNVLinkを持つRTX 20シリーズの役目であると考えているようだ。

新機能はまだまだある

かなり長い解説になったが、実はまだまだ解説しきれていない機能がある。レンダリング省力化を図る「Motion Adaptive Shading(MAS)」や「Variable Rate Shading(VAS)」、USB-C出力やVirtualLinkなど、RTX 20シリーズはこれまでになく新規要素が豊富だ。

それだけNVIDIAはこのRTX 20シリーズを戦略的製品として捉えているということだろう。Windowsにレイトレーシング(DXR)や機械学習(Windows ML)が組み込まれるので、それに見事タイミングを合わせて投入してきた感じだ。

ただ冷静な目で見ると、これまでの非レイトレーシングなゲーム中心、特にディスプレーがフルHD環境のユーザーにはメリットが薄いGPUになっていることも確かだ。肝心のレイトレーシング対応のゲーム「Battlefield V」は11月に延期したし、「Assetto Corsa: Competizione」や「Shadow of the Tomb Raider」はようやくSteamで配信が始まったが、レイトレーシング対応は先のようだ。

NVIDIAはRTX 20シリーズを搭載したボードを1日も早く安定供給させるとともに、RTX対応ゲームを1日でも早く、かつ1本でも多くリリースするよう業界に働きかけなければ、リアルタイムレイトレーシングというCG界の聖杯は、NVIDIAのもとに残らないだろう。

■関連サイト
NVIDIA GeForce RTX 20シリーズ

この記事をお届けした
グノシーの最新ニュース情報を、

でも最新ニュース情報をお届けしています。

外部リンク

IT総合カテゴリの人気記事

グノシーで話題の記事を読もう!
ペットボトル3本分の小型PCの熱性能を過酷なテストで測ってみた
静かに行なわれた「GeForce RTX 2080」の深夜販売
「玄関の鍵かけたっけ...」そんな不安はコレで解消。施錠状態が一目でわかるキーカバー
映画・音楽好きにはたまらない革新的3DサウンドスピーカーがKickstarterに登場
Googleの機械学習のレッスンが無料で受けれて資格が貰える余暇。
  • このエントリーをはてなブックマークに追加