AMD HEROES

twitter
facebook
line

“暴れ馬”2990WXを飼いならす

Threadripper 2990WX/2970WXの“Dynamic Localモード”とゲームパフォーマンスの関係

文● 加藤勝明(KTU)

 第2世代Threadripperは、第1世代の延長線上にある2ダイ構成の“X付き”モデルと、4ダイに強化して究極のマルチスレッド性能を追求した“WX付き”モデルの2ライン構成となっている。

 そのWX付きモデル、即ちThreadripper 2990WXや2970WXは、物理32コア64スレッド、あるいは物理24コア48スレッドという強烈なマルチスレッド性能を獲得したが、内部構造が他のCPUと違いやや特殊で、この特性を理解していないと“コア数が多いのに性能を活かしきれない!”という結果を生む。

 この原因はWX付きモデルの4基のダイのうち2基のダイはメモリーアクセスに対しハンデのある設計になっており、メモリーアクセス頻度の高い処理がハンデのあるダイ(コンピュートダイ)で実行されると遅くなる、というものだ。

 それを回避するにはコア1/2モードでコンピュートダイを無効化するほかに、コンピュートダイの特性を考えて作業を割り振ってくれるLinuxで運用する、といった方法がある。しかしWindows環境でもっとエレガントにWX付きのThreadripperを運用する方法が生まれた。それがRyzen Master v1.5より実装された「Dynamic Localモード」だ。メモリーアクセスがありそうな処理をハンデのないダイ(IOダイ)に優先的に割り振ることができる。

 このあたりの詳しい技術的解説は、Threadripper 2920X/2970WXのレビュー記事で触れているので、そちらも参照頂きたい。

2920Xと2970WXの価格はお得か?Ryzen Threadripper全モデル検証

 さて今回の検証の目的は、このDynamic Localモードがゲームに及ぼすパフォーマンスを、別のゲームで検証しようというものである。ちょうどBattlefield Vもスタートした所ではあるし、Threadripper環境でのパフォーマンスも検証しておきたい。

↑超メニーコアCPUとして衝撃を与えたWX付きThreadripperだったが、発売直後のレビューではクセが強すぎるCPUだった。だがRyzen Master最新版に実装されたDynamic Localモードでかなり状況が変わってきた
↑Threadirpper 2970WXや2990WXをWindows環境で使いこなすなら、ぜひとも導入しておきたい「Ryzen Master」。Dynamic Localモードは、このRyzen Masterの導入時にWindowsのサービスとして組み込まれ、デフォルトで有効になっている

検証環境をまず紹介

 今回の検証の解説に入る前に、検証環境を紹介しておこう。Dynamic Localモードを試せるCPUの中でも最も速い、Threadripper 2990WXをベースにしたシステムを準備した。このようなシステムにRyzen Masterをインストールすると、デフォルトでDynamic Localモードが有効になる……。つまりWindows環境でもうまくダイの使い分けをしてくれるシステムになる訳だが、今回はあえてそれを崩して、Dynamic Localモードの動きを見てみようという訳だ。

検証環境
CPU AMD Ryzen Threadripper 2990WX(32C64T、3GHz〜4.2GHz)
マザー ASUSTeK ROG ZENITH EXTREME(AMD X399、BIOS 1501)
メモリ G.Skill F4-3200C14D-16GFX×2(DDR4-2933で運用)
グラフィック GeForce RTX 2080Ti Founders Edition
ストレージ インテル SSDPEKKW512G7X1(NVMe M.2 SSD、512GB)
電源 Silverstone SF85F-PT(850W、80PLUS Platinum)
CPUクーラー Enermax ELC-LTTR240-TBP(簡易水冷、240mmラジエーター)
OS Windows 10 Pro 64bit版(October 2018 Update)

 これ以降、2990WXの中に入っているダイは“ノード”と表記する。WX付きThreadripperのダイは、OS側からは4基のNUMAノード、即ち「ノード0」〜「ノード3」として区別されるからだ。マイクロソフト製のツール「coreinfo」を使って調べると、ノード0とノード2がメモリーコントローラーに直結されている「IOダイ」、ノード1と3が「コンピュートダイ」となる。

↑coreinfoの実行結果からの抜粋。NUMAノードが個々のダイを示し、アクセスコストの低いノード0と2がIOダイということが分かる。これは2970WXと全く同じ構造と考えてよい。
↑多コアCPUを使うと必ずやってしまうのが論理コアごとの占有率表示。2990WXの場合、16列×4行表示にすると、上からノード0、ノード1……という順番に並ぶ
↑タスクマネージャーの上で右クリックし「NUMAノード」を選択する(NUMAノードのないCPUでは選択できない)と、このような2列×2行表示になる。1つのマスが1ノード、2990WXなら8コア16スレッドの占有率を総合したものだ。これも左上から右下に向け図のようになノード構成になる

ゲームにより異なる結果に

 今回のテストは、シンプルにゲームにおけるパフォーマンスチェックだ。Dynamic Localモードを有効にした場合と無効にした場合で性能がどう変化するかを確認する。ただDynamic Localモードを無効化しても、コンピュートダイに全ての処理が割り当てられるとは限らない。

 そこでタスクマネージャーから手動でゲームをノード1と3でのみ処理するよう設定した場合をワーストケースとして測定した。理論的には「Dynamic Local有効」が一番性能が高く、続いて「Dynamic Local無効」、そして「ノード1&3のみ」 の順で性能が落ちるはずだ。これを検証してみたい。

 まずは「Battlefield V」(BFV)だ。GPUはレイトレーシング対応のRTX 2080Tiを使っているが、DXRを有効にするとGPU側が強烈なボトルネックになるため、DXRは使わない状態で検証する。同様に解像度を上げてもGPU側のボトルネックが出てくるためフルHD固定とした。

 今回の検証では、画質はプリセットの“最高”とし、シングルプレイヤー用の“ティライユール”のステージ“平等”内にある一定のコースを移動した際のフレームレートを「OCAT」で測定した。

↑「Battlefield V」のフレームレート

 まずはっきりとわかるのは、コンピュートダイに処理を全振りすると10fps程度下がるということ。コンピュートダイで処理されるとGPUにつながるPCI-Expressコントローラーからも遠くなるので、下がって当然といえる。ただ正直なところ、GPUにRTX 2080Tiを使っているとはいえ「10fps」という数値はかなり軽微な影響ともいえる。

 ただDynamic Localモードを無効にしても、フレームレートは変わらない。タスクマネージャーでBFVの処理がどのノードで処理されているか観察すると、Dynamic Localモードが無効でもノード0とノード2に負荷がかかりつつ、ノード1や3の負荷は微増というパターンが圧倒的に多かった。逆にDynamic Localモードを有効にすると、ノード0とノード2以外の負荷がほとんど発生しないパターンが増える。

↑BFVの処理をノード1と3に全振りしたワーストケース。実際にこのような配置になることは、普通に使っていればあり得ないが……
↑Dynamic Localモードを無効化しても、メインの処理はほぼノード0と2で処理される印象。ただ1と3にも少しだけ処理が割り当てられるようだ
↑上はDynamic Localモード有効時に頻出する負荷パターンで、ノード0と2に負荷がキッチリと集まる。下のようにノード0にのみ集中することも(運次第だが)観測できる
↑Dynamic Localモード有効時の負荷の様子を、おなじみの論理コア単位で表示させたもの。ノード0と2以外の負荷は極めて小さい。BFVのDX12モードでもコアをそれほど使わないようだ

 BFVの検証で終わらせようと目論んでいたが、Dynamic Localモード有効でも劇的にフレームレートが上がらなかったので(むしろ無効でも下がらない方を褒めるべきだろう)、別の重量級ゲーム「Shadow of the Tomb Raider」(SotTR)でも試してみる。APIはDX12モード、画質“最高”、アンチエイリアス“TAA”とし、内蔵ベンチマークモードを利用して計測した。“CPU-Min”(最低)等とCPU-がつくものは、CPUで処理されるフレームレートを、“Avg”は実際に画面に表示されるフレームレートを意味する。

↑「Shadow of the Tomb Raider」のフレームレート

 BFVよりもDynamic Localモード無効時に一気にフレームレートが落ち込んでいることから、ゲームの設計によりDynamic Localモードの効きも変化することがわかった。Dynamic Localモード有効時と無効時のCPU占有率を比較してみよう。

↑Dynamic Localモードを有効にした状態での「Shadow of the Tomb Raider」ベンチ時のCPU占有率
↑Dynamic Localモードを無効にした状態での「Shadow of the Tomb Raider」ベンチ時のCPU占有率

 BFVだとDynamic Localモード無効時でもほとんどノード1や3に処理が落ちてこなかったが、SotTRだと簡単にノード1に処理が落ちてきた。その場合のノード負荷はノード0より少し少ない程度なので、メモリーかPCI-Expressへのアクセスが遠くなったことによる速度的ハンデがフレームレートに強く影響したものと考えられる。

 最後に同じ重量級として「Assassin's Creed: Odyssey」でも試してみよう。画質は“最高”とし、内蔵ベンチマーク機能を利用して平均fpsを測定した。

↑「Assassin's Creed: Odyssey」の平均フレームレート

 このゲームではDynamic Localモードの影響は非常に軽微であり、BFVよりも小さくなっている。ベンチマーク中のCPU占有率は非常に高いが、GPU負荷が高いためCPU側のボトルネックが見えにくい状況になっていることと推測できる。

↑Dynamic Localモードを無効にした状態での「Assassin's Creed: Odyssey」ベンチ時のCPU占有率

 上のCPU占有率はあくまで一例だが、ノード2に負荷が集中し、その他のノードに処理が分散するパターンが見られた。試行回数を増やせばまた別のパターンも見られるだろうが、Dynamic Localモードを使わないとこのように負荷が“とっちらかる”と考えてよいだろう。

2990WXや2970WXも、Dynamic Localモードを使えばゲームにだって活用できる

 もともとAMDは、Threadripperはクリエイターや研究者向けとし、ゲーマーには素直な挙動を占めるX付きモデルが最適、と謳っていた。WX付きモデルはCPU自体のクロックが低いことに加え、コンピュートダイの存在がゲームには向かないからだと筆者は推測するが、Dynamic Localモードを使うことでゲームによってはかなり改善できることがわかった。Ryzen Masterを導入するだけで利用でき、デフォルトで有効になるため、2990WXや2970WXユーザーは忘れずに導入しておこう。

この記事もおすすめ

PAGE TOP