LoginSignup

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

ubuntu18.04でGPUの使用率を上げたいです。

解決したいこと

ロボットの動力学に関するシミュレーション(ROS+gazebo)を使用しているのですが、CPUの温度が85度ぐらいになっている状態において、GPUの使用率が60%ほどなので、GPUの使用率を上げて、CPUの負荷を減らしたいです。

環境

windows11とubuntu18.04のデュアルブート
シミュレーションの動作環境: ubuntu18.04
CPU: AMD Ryzen 9 5900HX
GPU: NVIDIA GEForce RTX 3060 Laptop GPU
クーラー: 外付けのクーラーを追加
パソコン: ノートパソコン

発生している問題・エラー

ロボットの動力学に関するシミュレーション(ROS+gazebo)を使用した際に、以下のコマンドでGPUの使用率を調べた時、60%ほどでした。

nvidia-smi

Screenshot from 2022-06-04 23-33-47.png

この時、CPUの使用率を「システムモニター」で確認すると、以下の画像で示すように、まだ余裕があるように思えます。
Screenshot from 2022-06-04 23-38-04.png

CPUの使用率的には余裕がありましたが、この時に以下のコマンドでCPUの温度を確認すると、大体81000~85000(81度〜85度)ぐらいが出力され、CPUが高温になっていることが分かりました。添付画像は一例です。[参照ページ]
使用しているCPUの最大温度は105℃でしたが、一般的にCPUは80℃を超えたら異常の可能性があるという記事を多く拝見し、自分のGPUやCPUの設定を疑い、投稿をした次第です。

cat /sys/class/thermal/thermal_zone0/temp

Screenshot from 2022-06-04 23-40-46.png

自分で試したこと

このリンクを参照して、現在のGPUのモードを調べてみました。
まずはじめに、以下のコマンドで持続モードonにしました。

nvidia-smi -pm 1

また、以下のコマンドにより、現在のGPUクロック速度などを確認しました。linuxやGPUに関して詳しくないのですが、所々「N/A」なのが気になりました。

nvidia-smi -q -d CLOCK

Screenshot from 2022-06-04 23-46-26.png

さらに、同様のページを参照して、以下のコマンドでPERFORMANCEフラグ(各GPUの現在の状態とクロックの減速の理由?)を表示させました。IdleがActiveになっているのが気になりました。

nvidia-smi -q -d PERFORMANCE

Screenshot from 2022-06-04 23-50-40.png

質問内容

改めてになりますが、上記の内容を踏まえて、質問としては以下の3点となります。どれか一つでも回答していただけたら幸いです。
1. ubuntu18.04でGPUの使用率を上げる方法を教えてもらえないでしょうか。
2. 使用しているCPUの最大温度は105℃でしたが、85℃は問題ない範囲でしょうか。
3. GPUの使用率が60%付近なのは実は適切で、今回の問題はスペック的に仕方ないものでしょうか。

もし不足している情報があれば、指摘をいただけたらと思います。
よろしくお願いします。

0

1Answer

  1. ほぼ不可能だと考えられます(以下に理由を書きます)。
  2. 80度程度ならデスクトップなら問題ないです。100度くらいになるとあまりよろしくないですが、2000年ならいざしらず、2022年なのでCPUもそんなにやわではないと思います(80度以上の高温での使用はあまりよくないので、メーカーが指定する温度の範囲になるように心掛けた方がいいです)
  3. その可能性が高いと考えられます。

コッテリラーメンさんの使っているプログラムの詳細はわかりかねますが、GPUを使うプログラムというのはGPUを使う部分があらかじめプログラムによって指定されています。例えば倍精度の行列のかけ算の計算の時GPUを使うなど。

1000x1000 の行列のかけ算では1000^3乗くらいのかけ算を行なう事になりますが、GPUにはそれだけの倍精度の演算機がありません(多分ほとんどが単精度です)。この場合倍精度のGPUの領域の使用率は100パーセントになりますが、単精度の領域は100パーセントにはならないどので、結果GPUの使用率は20%前後になるでしょう。

と、いうように、GPU使用率が100%になる事は、あるタスク用に最適化されたGPUではないかぎりありえないです。
さらに、ほとんどのプログラムはGPUに対応していない部分は全てCPUで処理されます。しかも、GPUに対応した計算は行列計算などごく一部のライブラリに限られています。つまり、プログラムを書き変えて、GPU演算に対応していない場所を対応させない限り、GPU使用率があがる事はないでしょう。さらに、GPUの計算結果を統合するのは全てCPUの仕事です。100万回のかけ算が一秒でおわったとして、CPUは100万回の演算結果をさらにいじらなければなりません(次の演算を処理するためにGPUへ再び渡すか、はたまた行列ならトレースをとるなど)ので、CPUの負荷は、スレッド数がGPUよりも圧倒的に少ないため、さらに増えます。なので以上の理由からOSをいじってGPU使用率やCPU使用率を今よりあげるのはほぼ不可能だと考えられます。

しかし、コッテリラーメンさんが設定をミスって、本来GPUが使用されるべき所がCPUで演算されている可能性も0ではないので、もしそのような疑念があればプログラムのドキュメンテーションを読んで、もう一度設定を見直してみてはいかがでしょうか?

2

Comments

  1. 丁寧かつ分かりやすい回答をありがとうございます。

    ubuntu内のターミナルで何かコマンドを打てば、GPUがより働くようになることで使用率が上がるようになると誤解していました。GPUがより動くようになるコマンドをずっと検索していたので、ここで教えてもらえたのは非常にありがたいです。

    現状、自分が作成しているプログラムの方では特にGPUの指定はしていないため、動力学シミュレータ内のロボットの描画などのみにGPUが使われている状態です。ですので、動力学シミュレータのドキュメントを読み、GPUの設定に関する箇所があるかどうかを調べようと思います。
  2. 追記ですが、ノートパソコンでGPU計算のような重い計算をするのはオススメしません。大学などの機関に所属しているのなら、スパコンのアクセス権を申請してみては?スパコンのラーニングカーブは急ですが、使えるようになれば自分のマシンへの負荷や、計算時間を軽減させる事ができますよ。
    ノートパソコンはあくまで大きなシミュレーションの下準備のための、小さなシミュレーションのために使用する事をオススメします。
  3. 連絡ありがとうございます。

    持ち運びできるノートパソコンで開発を進めたいと思い、性能が良さそうなノートパソコンを購入しましたが、やはりノートパソコンで重い計算する事は良くないですよね。そもそもが間違っていましたようですね...
    大学の共用デスクトップパソコンでは、無理なく動作することが分かっているので、重い計算は素直にそのパソコンに任せたいと思います。

Your answer might help someone💌