コロッサス 澤田友明
ハードウェア×レンダラー TIPS vol.4 CPU編
スレッド数とパフォーマンスの関係を解き明かす!
ハードウェアの知見を得ることで、3DCG制作はもっと快適になる!
デジタルアーティストも知っておくべきハードウェア×レンダラーの知見を
レンダリングマスターとして知られるコロッサス 澤田友明氏がわかりやすく解説。
今回第4弾のテーマはわかっているようでわからない、「CPUのスレッド数とパフォーマンス」の関係について、徹底解説。
ハードウェアの知見を得ることで、3DCG制作はもっと快適になる!
デジタルアーティストも知っておくべきハードウェア×レンダラーの知見を
レンダリングマスターとして知られるコロッサス 澤田友明氏がわかりやすく解説。
今回第4弾のテーマはわかっているようでわからない、「CPUのスレッド数とパフォーマンス」の関係について、徹底解説。
株式会社コロッサス 澤田 友明 氏
株式会社コロッサス シニアデザイナー。広告業界やB2B関係のCG制作で長年R&Dを担当。グローバルイルミネーションレンダラについても初期段階から様々な検証を行なってきた。現在は同社でCGディレクションやR&Dを担当している。趣味はカメラでペンタックス党。自宅ではAMD製CPUを搭載した自作PCを愛用している。
年明け早々AMDは 2022 Product Premiereにて新しいZEN4世代としてRyzen 7000シリーズプロセッサを今年後半に投入することを明らかにした。プロセスルールのさらなる微細化やPCI Express Gen 5やDDR5メモリへの対応など興味は尽きないのだが、登場までにまだしばらく時間がかかるので今回もZEN3世代のRyzen 9 5950Xを中心にレポートをお届けしたい。
Ryzen 9 5950XのようなメニーコアCPUを使う用途として、その性能をフルに発揮させるには、レンダリングやシミュレーションといった高負荷な状態を(瞬間的ではなく)長く維持できるアプリケーションが向いていることは明確だが、使用するコアを増減させた場合に処理性能はどのように変化するのか、また沢山あるコアを別々の用途に使用してみたらどのような結果になるのか、メニーコアCPUならではの贅沢な検証を行ってみた。
Maya2020とArnold MtoA 5.0.0.2を使用して、おなじみ自然史博物館のシーンでテストを行った。
サンプリング:3/2/2/2/2/2 サイズ:1280x720
レンダー設定>システムタブ内のThreadsを手動で指定し、レンダリング時間を計測してみた。デフォルトの状態ではAutodetect Threadsとなっているため全てのスレッドを使用するが、Ryzen 9 5950Xは物理16コア論理32スレッドなのでAutoに加え1~32スレッドに設定を替えてレンダリングを行っている。またそのレンダリング時にCPUがどのような動作状況になっているかをRyzen Masterを使って表示させてみた。結果から言うと、スレッドが増えるにしたがってリニアにレンダリング時間が短くなるのかと思いきや、双曲線を描くようにパフォーマンスが変化する結果となった。
レンダー設定のスレッド数パラメータ
この結果からわかることは、低スレッドのレベル、例えば2スレッドから3スレッドに増やすとで約2倍速くなり、4スレッドで約3倍、5スレッドで約4倍、6スレッドで約5倍、と明確にレンダリング時間は短くなっているが、16スレッドから32スレッドでは約1.5倍しかパフォーマンスは伸びておらず、その効果は徐々に薄くなっていると言える。Ryzen Masterによるコアの使用状況を見てみると、16スレッドまではRyzen Mater上でも明らかな差が読み取れるが、それ以上では微妙な変化としか分からない。これはつまり、16スレッドまでは物理16コアに対してレンダリング処理が割り振られているが、それ以上はSMT(Simultaneous Multithreading)に対してスレッドを割り当てている状態となり、1つのコアを疑似的に2つのコアとして見せかけているだけなので、パフォーマンスが2倍になるわけではないということだろう。ただそれでも物理コアだけの16スレッドで処理した場合よりも、SMTを使って32スレッドに割り当てたほうが速くなるということは明確なので、レンダリングにおいては使わない手はないと言える。
特筆すべき点としては、グラフを見ていただいても分かることだが、Auto Detected(自動検出)よりも明確に32スレッドと指定した方が若干パフォーマンスが上がっている。ただし5秒の差なので誤差の範囲かもしれない。もう1点、1スレッドと指定した場合はなぜか全てのスレッドを使った状態となってしまい、純粋に1スレッドとして計測することはできなかった。
上記検証時のRyzen Masterによる結果を見てみると、スレッド数が増えていくに従って動作周波数は低くなっていき、消費電力は増している。CPU温度については。CPUクーラーのファンが温度に対する冷却能力を自動制御されているため、リニアに温度が上がっているわけはなかった。それでも2スレッドと32スレッドでは10度近い温度差が見られる。
2スレッドでの使用状況 CPU温度:65.41度 CPUスピード:4.64GHz 消費電力:39.75W
4スレッドでの使用状況 CPU温度:67.24度 CPUスピード:4.43GHz 消費電力:59.27W
6スレッドでの使用状況 CPU温度:65.71度 CPUスピード:4.34GHz 消費電力:68.02W
8スレッドでの使用状況 CPU温度:66.47度 CPUスピード:4.29GHz 消費電力:74.77W
10スレッドでの使用状況 CPU温度:68.1度 CPUスピード:4.22GHz 消費電力:86.04W
12スレッドでの使用状況 CPU温度:69.02度 CPUスピード:4.19GHz 消費電力:98.08W
14スレッドでの使用状況 CPU温度:69.4度 CPUスピード:4.16GHz 消費電力:103.59W
16スレッドでの使用状況 CPU温度:71.74度 CPUスピード:4.11GHz 消費電力:124.18W
32スレッドでの使用状況 CPU温度:74.37度 CPUスピード:4.01GHz 消費電力:138.14W
特筆すべきこととしては、最初の8スレッドまでは片方のCCD(Core Complex Die)を使用し、それ以上のスレッドではもう一つのCCDを使用し始めている。また、それぞれのCCDにおける性能が高いゴールデンコア(黄色の星印)とシルバーコア(白い丸印)から使用していることは興味深い。
もう一つ、メニーコアに対しての面白い検証として、Maya2022を複数同時に立ち上げ、それぞれのレンダー設定に均等にスレッドを振り分けた場合の同時レンダリングを試してみた。その結果は以下の通り。
1つ前の結果と比べてみると、Maya単体の8スレッドでは0:20:44なので若干計算時間が伸びている。4スレッドの場合もMaya単体では0:46:10なのでこちらも明らかに時間がかかっている。これはたぶん、割り当てられたスレッドとは別にOS上の処理やアプリケーションの処理なども重複してしまうため、純粋にそのスレッドだけを使いきれるわけではないということだろう。
CPUにおけるコア数が性能の1つの指標になっていることは間違いない。しかし、コア数が増えることがリニアに性能に直結するのか、それはコストパフォーマンスでも同じことが言えるのか、また別の用途向けに最適化された異なるコアを統合したヘテロジニアスコアのようなCPUも登場してきており、CG制作におけるCPU選びは単純ではなくなっている。今回テストを行ったRyzen 9 5950Xでは同一性能のメニイコアCPUということで分かりやすい検証結果にはなったが、Ryzen Threadripperのように最大64コアになってくると、OSの制限によるプロセッサーグループの影響で異なる結果になるかもしれない。それにしても、Ryzen 9 5950Xは32スレッドフルに使用していてもCPU温度は80度を超えることがなく(空冷CPUクーラー)とても安心して運用できていることは、長時間CPUに負担をかけるレンダリング向けと言えるだろう。
RECOMMENDED PC
PAGE TOP