後藤弘茂のWeekly海外ニュース

シェーダーの導入に匹敵する大変革となるNVIDIA Turingのハイブリッドレンダリング

ハイブリッドレンダリングの普及を目指すNVIDIA

 NVIDIAはコンシューマ向けグラフィックスカードで、『ハイブリッドレンダリング』を実現する「GeForce RTX」ファミリを発表した。リアルタイムレイトレーシング機能と深層学習機能を加えることで、3Dグラフィックスパイプラインを抜本から変革しようとするNVIDIAの戦略の要となる製品ファミリだ。

 NVIDIAはGeForce RTXを、499ドルから999ドルまでの価格レンジで投入する。予約はすでに始まっており、出荷は9月20日が予定されている。

 GeForce RTXは、NVIDIAが先週のSIGGRAPHで発表したプロフェッショナル向けGPUの「Quadro RTX」ファミリと同じ「Turing」アーキテクチャだ。ダイ種類は2種類とみられ、上位機種はQuadro RTXと同ダイだ。

TuringアーキテクチャのGeForce RTX 2080 Tiのダイスペック
GeForce RTXの3SKU(Stock Keeping Unit=アイテム)
9月20日には店頭に

 Turingアーキテクチャのポイントは、GPUのレンダリングパイプラインを刷新することにある。PC向け3D GPUは、ラスタライズレンダリングを固定機能で実現した単純なGPUからスタートした。DirectX 9で本格的なプログラムシェーダーが搭載され、シェーダーグラフィックスへと移行。ここでパイプラインが大きく変わり、オフラインレンダリングの世界でRenderManが開いたシェーダーグラフィックスが、リアルタイムレンダリングに入り込んだ。

 今回のTuringのハイブリッドレンダリングは、シェーダーグラフィックスの導入に匹敵する大変革だ。従来のレンダリングは、3Dモデルを仮想的な視点から画面解像度のピクセルへとラスタライズする方式を取っていた。複雑な光の物理現象は、シェーダーによるフェイクで実現していた。

ラスタライズとレイトレーシング、2つのレンダリング技術の違い

 それに対してレイトレーシングレンダリングは、光の物理現象を簡略化してシミュレートすることで、より物理的に正しい3Dグラフィックスを作り出す。NVIDIAのJensen Huang(ジェンセン・フアン)氏(Founder and CEO, NVIDIA)は、ドイツのケルンで開催したGeForce RTXの発表イベント「GeForce Gaming Celebration」において、レイトレーシングを「グラフィックスの聖杯」と表現した。聖杯のように、追い求められてきたゴールということだ。

フォトリアルなグラフィックスを実現するための聖杯技術がレイトレーシング

 現在、映画などのオフラインレンダリングでは、レイトレーシングを組み合わせたハイブリッドレンダリングが一般的となっている。NVIDIAは、Turingアーキテクチャで、それをリアルタイムグラフィックスに持って来ようとしている。ちょうど、シェーダーグラフィックスを、GPU上でのリアルタイムグラフィックスに持ってきた時のように。

レイトレーシング機能はGeForce版でも落とさず

 NVIDIAは、Turingアーキテクチャを、まず、プロフェッショナル向けのQuadro RTXとして発表した。Quadro RTXの価格は、最上位のQuadro RTX 8000が10,000ドル、再廉価のQuadro RTX 5000でさえ2,300ドルという挑戦的なものだった。そのため、NVIDIAが、同じダイを使うGeForce RTXをどの程度の価格設定にするのか、機能の差をどの程度つけるのかが注目されていた。Quadro RTXを差別化するた、GeForce RTXは価格を抑える代わりに、機能差をつけて、とくにレイトレーシング性能を落とすのでは、という懸念があった。

 しかし、フタを開けると価格は従来のGeForce価格レンジに収めて、カギとなるレイトレーシング性能はQuadro RTXと同等という、期待を上回るものだった。価格は最上位のGeForce RTX 2080 Tiが999ドルで、2080が699ドル、廉価版の2070で499ドルだ。NVIDIAが、ハイブリッドレンダリングの普及に、それだけ本気だということがわかる価格構成だ。

 最上位の999ドルのGeForce RTX 2080 Tiを、Quadro RTX 6000/8000と比較すると、よくわかる。簡単に言えば、シェーダーや深層学習の性能は、Quadro RTX 6000/8000に対してGeForce RTX 2080 Tiは83%程度。しかし、レイトレーシングのアクセラレータ性能は100%同等。GeForce RTX 2080 Tiの方が、比重としてはハイブリッドレンダリング重視となる。

Turing世代のGPUのスペック比較
PDF版はこちら
Turingのラインナップ

 具体的には、従来のシェーダーグラフィックスのためのCUDAコア(FP32浮動小数点積和算ユニット)数はQuadro RTX 8000が4,608に対して、GeForce RTX 2080 Tiは4,352。SM(Streaming Multiprocessor)がVolta型の構成だとすれば、Quadroが72SMでGeForceが68SMの計算となる。動作周波数はGeForce RTX 2080 Tiがベース1.35GHz、ブースト1.55GHz。さらに1,199ドルのGeForce RTX 2080 Ti Founders Editionになるとオーバークロック周波数が1.635GHzとなる。周波数では、Quadro RTXファミリも最高1.75GHzだ。

 そのため、シェーダープロセッシングのFP32性能では、GeForce RTX 2080 Tiが計算上13.45TFLOPSとなり、Quadro RTX系の最高は16.1TFLOPSなので、約83%となる。深層学習のためのテンサーコア(Tensor Core)は、シェーダークラスタのSMの内部にあるため、こちらの性能比率も同様の約83%となる。

 それに対して、レイトレーシングのアクセラレータであるRTコアの性能は、GeForce RTX 2080 TiもQuadro RTX 6000/8000どちらも10 Giga Rays/sと同等。演算については、GeForce RTX 2080 Tiはレイトレーシング重視となっている。ちなみに、SM数が減っているのにレイトレーシング性能が同等であることから、RTコアはSMの中ではなく、SM間の共有ユニットであることが推測される。ラスタライザと同様に「GPC(Graphics Processing Cluster)」ごとにRTコアが配置されている可能性がある。

メモリ容量は従来通りのGeForce RTX

 GeForce RTXとQuadro RTXで差が大きいのはメモリ容量だ。GeForce RTXとQuadro RTXはどちらもメモリにGDDR6を採用している。ただし、Quadro RTXは16G-bit容量のDRAMチップ、GeForce RTXは8G-bit容量のDRAMチップと、DRAMチップの容量の違いがある。

 また、メモリインターフェイスは、Quadro RTX 6000/8000が384-bitインターフェイス、それに対してGeForce RTX 2080 Tiは352-bitインターフェイスと、1DRAMチャネル分が無効されている。

 そのため、メモリ容量はGeForce RTX 2080 Tiが11GBと、Quadro RTX 6000の24GB、RTX 8000の48GBよりかなり少ない。GeForce RTX 2080とGeForce RTX 2070は、メモリインターフェイスが256-bitであるため、メモリ容量は8GBだ。GeForce RTXとQuadro RTXはどちらもGDDR6でメモリの転送レートは14Gbps。そのため、メモリ帯域はQuadro RTX 6000/8000が672GB/sで、GeForce RTX 2080 Tiは616GB/s。GeForce RTX 2080とGeForce RTX 2070は、256-bit幅で、帯域は448GB/sとなっている。

 Quadro RTXは、2リンクのNVLinkを実装し、100GB/sで2枚のカードを連結した、高帯域かつメモリ共有が可能なSLI構成ができる。GeForce RTX系では、GeForce RTX 2080 TiとGeForce RTX 2080で、同様のNVLinkベースのSLIが可能だ。ただし、GeForce RTX 2070では、SLIは記されていない。

ダイを大型化することで機能を増やしたTuringアーキテクチャ

 NVIDIAのGPUダイは、現在、GPUコンピューティング向けとグラフィックス向けの2系統となっている。Keplerまでは共通だったが、Maxwellがおもにグラフィックス向けとして開発され、VoltaがおもにGPUコンピューティング向けとして開発され2系統に分化した。

 もっとも、GPUコンピューティング向けダイがハイエンドグラフィックスの一部に、グラフィックス向けダイが一部のGPUコンピューティング製品にも使われており、完全に分化しているわけではない。しかし、アーキテクチャの傾向としては2系統になっている。レイトレーシングのためのRTコアは、GPUコンピューティング製品には不要なので、Turingの系統はグラフィックス向けということになる。

2系統に分化しているNVIDIA GPU
PDF版はこちら

 半導体チップとしてGeForce RTX世代を見ると、成熟したプロセスでダイサイズを大きくすることでトランジスタ数を増やして機能を増やしたグラフィックス向けGPUダイとなる。ダイサイズはハイエンドのGeForce RTX 2080 Tiで754平方mmでトランジスタ数は186億。NVIDIAのグラフィックス向けGPUとしては、過去最大となる。従来の最大のGPUは、GPUコンピューティング向けのTesla V100(GV100)で、210億トランジスタで815平方mmだ。

GPUのダイサイズトレンド
PDF版はこちら

 NVIDIAのGPUは、16nmプロセスのPascal世代で、GPUコンピューティング向けの「Tesla P100(GP100)」が153億トランジスタで610平方mmのダイ。グラフィックス向けの「GeForce GTX 1080 Ti(GP102)」が118億トランジスタで471平方mmのダイ。GPUコンピューティング向けとグラフィックス向けでのダイサイズの差が縮まってきている。

 GeForce GTX 1080 Ti(GP102)と比べると、今回のGeForce RTX 2080 Tiは、ダイサイズが60%増大。プロセス技術は、GeForce GTX 1080 Tiが16nm、GeForce RTX 2080 Tiが12nmでプロセスノードの数字の上では小さくなっているが、実際にはトランジスタのフィーチャサイズは変わらない。事実、トランジスタ数も58%増と、ほぼダイサイズの増加分しか増えていない。つまり、同じプロセスノードで、ダイを大きくすることで無理矢理機能を増やしたGPUが、GeForce RTX 2000世代だ。

 もっとも、12nmプロセスはベースが16nmプロセスであるため、プロセスとしての成熟度が高い。そのため、歩留まりも16nmの当初より上がり、ダイサイズが肥大化してもコスト増はある程度抑えられる。また、並列プロセッサであるGPUの場合は、不良箇所を含むコアを無効にしてコア数を減らしたSKU(Stock Keeping Unit=アイテム)とすることで、多少の不良があるダイも出荷できる。現在は、最新プロセスの製造コストとマスクコストが急上昇しているため、成熟したプロセスで巨大ダイにするちというNVIDIAの戦略は、合理性があるが、それでも、750平方mmを超えるサイズは異例だ。

 そして、NVIDIAは増やしたトランジスタのほとんどを、レイトレーシングと深層学習につぎ込んだ。GeForce GTX 1080 TiのCUDAコア数は3,584コアで、FP32性能はブースト時で11.3TFLOPS。GeForce RTX 2080 TiはCUDAコアが4,352で、ブースト時のFP32が13.4TFLOPS。シェーダープロセッシングでは、1世代でコア数が21%、性能が19%程度しか上がっていない。残りのトランジスタは、深層学習のテンサーコアやレイトレーシングのRTコア、その他の機能拡張に使われたことになる。

 GeForce RTX 2070とGeForce GTX 1070/1070 Tiを比較すると、CUDAコアはRTX 2070が2,304に対して、GeForce GTX 1070で1,920、GeForce GTX 1070 Tiで2,432。同価格レンジで比較すると、FP32性能はGTX 1070系が6.4~8.2TFLOPSに対して、RTX 2070は7.46TFLOPSと同等レンジとなる。RTX 2070のダイサイズはまだわかっていないが、こちらはダイの大型化のトランジスタはほとんどがハイブリッドレンダリングのために使われたことになる。

まだ謎が多いTuringのSMアーキテクチャ

 従来のシェーダープロセッシングの性能の増加は抑え、増やしたトランジスタはレイトレーシングと深層学習に回した。これが、NVIDIAのTuringアーキテクチャの大きな特徴だ。

 もっとも、シェーダークラスタであるSMのアーキテクチャも拡張されており、シェーダープロセッシングの性能は、FLOPSの額面以上に上がっている可能性がある。重要なポイントの1つは、FP32浮動小数点演算ユニットと整数演算ユニットの両方を並列に稼働させることができるようになったことだ。

 実際には、Volta(ボルタ)アーキテクチャでも、FP32浮動小数点演算ユニットと整数演算ユニットは分離されており、命令発行も共有されていない。しかし、NVIDIAの説明では、Turingで初めて並列実行可能になったように聞こえる。

 両ユニットの並列稼働を可能にするためにはいくつかの条件がある。まず、レジスタファイルが2つのユニットからのアクセスに応えられるアクセスポートを備えること。ただし、Volta SMにはテンサーコアが2ユニットあり、並列に稼働していることからレジスタアクセスポートはすで対応している可能性が高い。

 もう1つの問題は命令の並列性の抽出だ。GPUはインオーダ実行であるため、もし単一のwarp(32スレッドのバンドル)から命令をピックするとしたら、浮動小数点演算と整数演算が前後に並んでいる必要がある。浮動小数点演算は座標系から始まり多くの場面で使われる、一方整数演算はテクスチャ系が主な処理となる。そのため、単一warpからうまく浮動小数点演算と整数演算を交互に抽出することは難しい。

 しかし、Volta型のSMアーキテクチャであるなら、1命令ユニットに対して、浮動小数点と整数とも演算アレイは16-way。2サイクルかけて1warpを実行する。そのため、両ユニットに異なるwarpからの命令を発行して並列実行することが可能となる。このあたりはアーキテクチャの詳細が見えてからとなる。

VoltaのSMアーキテクチャ
PDF版はこちら

テンサーコアをグラフィックス向けダイで初めて搭載

 GeForce RTX 2080 Tiでは、グラフィックス向けダイとしては初めて深層学習向けのテンサーコアが実装された。テンサーコアは、4x4のマトリックス計算を行なう専用ユニットだ。Volta GV100に実装されていたテンサーコアはFP16の演算精度のユニットだった。

 それに対してTuringアーキテクチャに実装されているテンサーコアは、INT8/INT4の整数もサポートする。INT8とINT4は、テンサーコアでSIMD実行されるため、スループットはそれぞれFP16の2倍と4倍になる。これは、推論(インファレンス)で使われる精度が8-bitが多く、4-bitも増えてきているためだ。

NVIDIAのテンサーコア
PDF版はこちら
テンサーコア

 昨年(2017年)頃から急速に、グラフィックスでの深層学習の応用が進み始めた。NVIDIAはレイトレーシングのノイズ除去やアンタイエイリアシングに深層学習を推進している。「NVIDIA DLSS(Deep Learning Super Sampling)」は、高画質なアンタイエイリアシングを実現する技術で、これまでNVIDIA DLAAと呼ばれていた。NVIDIA DGX-2のようなパワフルな深層学習ハイパフォーマンスコンピュータ上で特定の画像に適したDLSSモデルを作成、それをダウンロードすることで、DLベースの高画質なアンタイエイリアシングを実現する。そのためのフレームワーク「NVIDIA NGX」も提供するという。

NVIDIA DLSSの概念
NVIDIA NGXサービス
16枚のVolta GPUカードを内蔵するサーバーDGX-2
学習データをベースに高画質なアンタイエイリアシングを実現する

レイトレーシングのRTコア

 GeForce RTX 2080 Tiには、主流の商用GPUとして初めてレイトレーシングのアクセラレーション機能が搭載された。RTコアとNVIDIAが呼ぶこのユニットは、レイトレーシングの基本アルゴリズムのハードウェア実行ユニットだ。

 レイトレーシングでは、レイ(光線)をキャストし、そのレイを走査させて行き、オブジェクトとの交差を求める。交差した場合に、反射する場合はレイをオブジェクト面の角度に合わせてバウンスさせる。そこでレイが複数生成される場合も生じるし、屈折する場合も生じる。

 RTコアでは、レイの走査であるトラバーサルの負荷を減らす「BVHトラバーサル(Bounding Volume Hierarchy Traversal)」のハードウェア支援と、オブジェクトとの交差である「レイ・トライアングル・インタセクション(Ray Triangles Intersection)」をハードウェアで行なう。GeForce RTX 2080 Tiでは、RTコアを使ったレイトレーシングの性能が、10 Giga Rays/sだと説明している。

BVHトラバーサルの概念図。階層型のボックスを定義することで、トラバーサル処理の負荷を減らす

 ハードウェアのRTコアの処理性能をシェーダープロセッシングに換算すると、1GRay/sあたり10TFLOPSになるという。命令ステップ数がそれだけ増える。10GRay/sというスペックは、約110TFLOPS相当になるという。言い換えれば、数世代先のGPUのレイトレーシング性能を、先取りしたことになる。Turingのレイトレーシング性能は、499ドルカードのGeForce RTX 2070でも6Gray/s。ハイブリッドレンダリングに十分対応できる性能と見られる。

 NVIDIAはGDC(Game Developers Conference)のさいに、4枚のVolta GV100カードで構成されるNVIDIA DGXで行なっていたスターウォーズのデモを、SIGGRAPHではTuringアーキテクチャの1枚のQuadro RTX 6000で再現していた。4枚のVolta GV100で55msかかっていた処理を、Turingでは45msで実行。Pascal世代では、同じ処理に308msかかるので、リアルタイムとは言えなくなる。

TuringとVolta、Pascalの比較
鏡面反射だらけのベイダータイプと、これも映り込みだらけのソルジャー

ハイブリッドレンダリングの衝撃的なライブデモを公開

 NVIDIAは、GeForce RTX 2080 Tiの発表を、世界で2番目に大規模なゲームショウ「gamescom」で発表した。gamescomの観客に訴えるために、NVIDIAはゲームの実プレイ画面でのハイブリッドレンダリングのデモも用意した。

 その中でも群を抜いていたのは、「Battlefield V」のデモで、爆発の火焔がリアルタイムに眼球に反射するシーンから始まり、火焔が車体や水たまりに反射する様子がプレイ画面でデモされた。

Battlefield Vでチャーチル・クロコダイル火炎放射戦車からの火焔が、放置されたクルマの車体や水たまりに映り込む様子をレイトレーシングでリアルタイムに再現
上のシーンをレイトレーシングなしでレンダリング
Battlefield Vで眼球に火焔が映り込む
Battlefield Vで水たまりにキャラクターや自キャラクターの姿が映り込む

 このほか、「METRO EXODUS」のデモでは、リアルタイムのグローバルイルミネーション(Global Illumination:大域照明)によって、バウンスした反射光が室内の影の部分を照らす際に、自然な陰影ができることが示された。

 従来のパラメトリックなリアルタイム手法では、擬似的なGIで一様に明るくしてしまう。しかし、ハイブリッドレンダリングでは、GIの間接光での濃淡ができるため自然に見える。また、「Shadow of the Tomb Raider」のデモでは、レイトレーシングによる影の生成で、子供が手に持つ花火の点光源からの影の例などが示された。

METROでのグローバルイルミネーションデモ
Shadow of the Tomb Raiderでのシャドウ生成

新しい性能指標を試すNVIDIA

 Turingアーキテクチャで、シェーダープロセッシングへのリソースは抑えて、ハイブリッドレンダリングにフォーカスしたNVIDIA。そのため、同社は、新製品であるGeForce RTXファミリを導入するにあたって、従来通りのシェーダープロセッシング性能をGPUの指標にはされたくない。そこで、ハイブリッドレンダリングでの性能を指標として確立するために、新たに「RTX-OPS」と呼ぶ謎の指標を導入した。

GPURTX-OPS性能
GeForce RTX 2080 Ti78T RTX-OPS
GeForce RTX 208060T RTX-OPS
GeForce RTX 207045T RTX-OPS

 RTコアは、各製品の性能比較を見ると、SM数に左右されていないため、SMの外の共有ユニットになっていることが予想される。RTコアはFP32ユニットと並列に動作し、FP32ユニットは整数ユニットと並列に動作できる。そのため、1フレームの描画タイムの中でレイトレーシングとシェーダープロセッシング、浮動小数点演算系とテクスチャ系の整数演算、これらを並列に行うことができる。真のハイブリッドレンダリングの性能が見えてくるというのが、NVIDIAの主張だ。

 NVIDIAはRTX-OPSで比較して、GeForce RTX 2000系が大きなジャンプだと説明する。ただし、現在はまだ、RTX-OPSの計算の詳細な根拠がわかっていない。

NVIDIAは新しい性能指標として自社独自のRTX-OPSを導入
RTX-OPSでの比較