このブログは、株式会社フィックスターズのエンジニアが、あらゆるテーマについて自由に書いているブログです。
先日、GeForce GTX 1080 Tiを2枚積んだマシンを計算サーバとして追加導入しました。
新しいマシンで意気揚々と学習を回していたのですが、時間がたつにつれて学習速度が低下していったり、マルチGPU化しても性能が伸びなかったりかえって遅くなったりしてしまっていました。
このような症状を聞くと熱問題だろうと気づく方も多いかと思いますが、せっかくなので冷却が不十分なGPUがどういった挙動を示すか少し実験してみました。
GPUに負荷をかけるためのアプリケーションとして、ひたすらcuBLASのSGEMM (n=m=k=8192) を実行し続けるプログラムを用意しました。
また、各種メトリクスの取得にはNVMLを使用し、およそ10-20ms程度ごとにGPU温度やコアクロックなどの情報を取得しています。
ミニタワーにXeon E5とGeForce GTX 1080 Ti 2枚を詰め込んだ構成です。
およそ500秒ほどの間負荷をかけ続けた際のGPU温度とコアクロックの変動と、SGEMMのパフォーマンスは以下の図のようになっていました。
ぱっと見たところ説明のつけやすそうな遷移となっていて、おおよそ以下のような動作となっているようです。
さて、このマシンにはGPUが2台乗っています。
普通に使っていた時の感覚だとなんとなくGPU1の方が性能が安定しないように感じていたのですが、計ってみると想像以上によくわからない挙動をしていました。
以下に、GPU0と同様に測定したGPU温度や動作周波数などの変動を示します。(温度の上昇が激しかったので、400秒ほどで打ち切っています。)
GPU0のときと比べて明らかにおかしな挙動となっているように見えます。
GPU温度が93℃以上になるとHW Slowdownが効き始めるような設定となっているのですが、その温度に達するまで(おそらくは達した後も)できるだけBoostしようとしているように見えます。
その結果、93℃に到達するとHW Slowdownでクロックを半分まで落とされ、多少落ち着いたらまたクロックを定格以上まで上げようとしているようです。
パフォーマンスについてもクロックと同様にあまり安定感のない結果となっていました。
また、時間当たりのSGEMM実行回数はGPU0の場合に比べて2-3%ほど少ないものとなっていました。
(燃えない程度に)もっと温度を上げてみましょう。
2枚のGPUは隣り合って配置されているので、両方のGPUに負荷をかけるともっと温度が上がります。
おおむね単体で動かしたときと似たような挙動となっています。
120秒ぐらいまでは単体で動かしたときと似たような挙動となっていますが、そこからさらに温度が上がるため、それ以降はまた異なる挙動となっています。
94-95℃あたりでしばらく860 MHzを維持していたかと思うと、何かの拍子に諦めたかのように温度が90℃程度まで落ちるように動作周波数を下限 (139 MHz) まで落とすようです。
その後もGPU0につられて温度は上昇するのですが、基本的に139 MHzのままで、93℃付近でHW Slowdownにより一時的に動作周波数が半分になることを繰り返すようです。
これだけ性能が落ちるとなると、マルチGPU化しても遅い方のGPUに引っ張られ、かえって性能が低下してしまうのも納得ですね。
GPUのクロックはもっと滑らかに変動するものかと思っていたのですが、実際に計ってみると想像を超えるようなぶれ方をしていました。
同一ノード内でもGPUごとにばらつきがあると、マルチGPUなワークロードでは単純なクロック低下以上の性能低下につながるので、全GPUが十分な性能を維持できるような環境を用意することが大切です。
keisuke.kimura in Livox Mid-360をROS1/ROS2で動かしてみた
Sorry for the delay in replying. I have done SLAM (FAST_LIO) with Livox MID360, but for various reasons I have not be...
Miya in ウエハースケールエンジン向けSimulated Annealingを複数タイルによる並列化で実装しました
作成されたプロファイラがとても良さそうです :) ぜひ詳細を書いていただきたいです!...
Deivaprakash in Livox Mid-360をROS1/ROS2で動かしてみた
Hey guys myself deiva from India currently i am working in this Livox MID360 and eager to knwo whether you have done the...
岩崎システム設計 岩崎 満 in Alveo U50で10G Ethernetを試してみる
仕事の都合で、検索を行い、御社サイトにたどりつきました。 内容は大変参考になりま...
Prabuddhi Wariyapperuma in Livox Mid-360をROS1/ROS2で動かしてみた
This issue was sorted....