週刊アスキー

  • Facebookアイコン
  • Twitterアイコン
  • RSSフィード

「Ryzen Master」の新機能「Dynamic Localモード」をねちっこく考察

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

2018年11月08日 14時30分更新

Dynamic Localモードで速くなる理由は?

 さて、今回筆者を苦しめたのはDynamic Localモード無効時に極端に結果がブレることが観測されたということだ。Lightroom Classic CCやPUBGでは、特にそれが顕著であると感じた。Handbrakeなどの結果は変わらなかった。試行回数を十分確保すれば観測できた可能性もあるが、時間的制約上の問題で追求は断念せざるをえなかった。

 ここで考察するのは、WX付きThreadripperでDynamic Localモードを有効・無効化した際、CPUコアの使われ方がどう違い、それが結果にどう影響するかだ。

 それにはどのコアがIOダイで、どのコアがコンピュートダイ上にあるかを確認する必要がある。そのためにはマイクロソフトが公開している「Coreinfo」を使うのが一番だ。このツールではダイが「NUMA Node」という表現をしているので、これに倣って表記している。

2970WXでCoreinfoを実行し、中盤に表示される「NUMA Node Map」と「Cross-Numa Node Access Cost」を見る。ノードが4つあるということは、つまり4基のダイが接続されていることを示す。

WXでないThreadripperはRyzenやCore i7/i9などと同じように、ノードは1基であると表示される。実際は2基のダイが稼働しているが、メモリーアクセスなどの面でほぼ等価であるため、論理的には単一12コア/24スレッドCPUとして扱われるのだ。

なお、タスクマネージャーの各コアの上にマウスポインターをかざしても、コアがどのダイ(ノード)に所属しているか調べられる。左上をノード0コア0とし、右隣がノード0コア1……右下がノード3コア11とカウントされる。

タスクマネージャー上で2970WXの各コアがどのダイに載っているかを書き加えてみた。1ダイ6コア、SMTを合わせ12コアでまとまっている。2990WXの場合はこれを16コア単位に拡張すればよい。

 上図の場合、Socket MapとNUMA Node Mapに表示されているアスタリスク(*)1つが1論理コアを示す(左端が一番若いコアとなる)。NUMA Node Mapの「NUMA Node 0~3」が4基のダイ(ノード)を示し、アスタリスクが表示されているコアがそのダイに載っていることを示す。一番上のNUMA Node 0はコア0~コア11、Node 2がコア12~23、Node 1がコア24~35、Node 3がコア36~47となる。

 そして、ダイの結びつきはCross-NUMA Node Access Costに書かれている。各ノードから別のノードへアクセスした時の時間的コストを数値化したものだが、図ではノード0と2に非常に小さい(=速い)数値がある一方で、ノード1と3は全般的に大きい(=遅い)。つまり、ノード0と2が外界とのアクセスを持つIOダイ、1と3がコンピュートダイと判断できるわけだ。

Linux環境があるなら“numactl --hardware”コマンドを使ってみよう。2970WX環境で試した結果、ノード0と2にメモリーが16GBずつ接続されていると表示されたので、これらがIOダイだと一発でわかる。ちなみにWindows Subsystem for Linuxでもnumactlは使えるが、CPUの構造を正しく認識しない

この記事をシェアしよう

週刊アスキーの最新情報を購読しよう

この連載の記事