概要
機械学習やゲームなど、グラボ(RTX 2080Ti)に高負荷をかけたときの電力消費をおさえるために、GPUの電力制限を設定している。ただ、Windowsを再起動するたびにリセットされてしまうので毎回設定しなおすのが手間だった。そこで、バッチファイル+タスクスケジューラを使用し、OS起動時に電力制限を自動設定する運用に変更した。その時の手順を記事として残しておく。
なお、アイドル状態におけるGPUの電力消費は低いので、GPUをフルで回さないなら電力制限を設定する必要はないと思う。
バッチファイルの作成
電力制限を変更するバッチファイルのサンプルは以下の通り。
任意のファイル名で保存する。(例:c:\work\gpu_power_limit.bat)
@echo off
setlocal
REM -- REMから始まる行はコメント行
REM -- 電力制限ワット数のパラメータ(例:150Wに設定する場合)
set UPPER_LIMIT_W=150
REM -- nvidia-smiコマンドのパス
set NVIDIA_SMI=C:\Windows\System32\nvidia-smi.exe
REM -- 電力制限の実行
call %NVIDIA_SMI% -pl %UPPER_LIMIT_W%
endlocal
このスクリプトは、GPU にパワーリミットを設定するのサイトを参考にした。
[備考]
電力制限を設定するとGPUの動作が不安定になる可能性がある。そのため、ためしに手動で電力制限を行い問題が起きないか事前に確認するのが望ましい。
なお、電力制限を行うnvidia-smiコマンドは、管理者モードのコマンドプロンプトで実行する必要がある。
タスクスケジューラの設定
-
タスクスケジューラを起動
スタートメニュー>Windows管理ツール>タスクスケジューラ -
タスクの作成
「全般」タブ
タスクの名前を入力(例:GPU電力制限タスク)
「ユーザーがログオンしているかどうかにかかわらず実行する」を選択
「最上位の特権で実行する」をチェック
構成はWindows10に変更(何となく)
続いて「トリガー」タブ
トリガーを新規作成。タスクの開始を「スタートアップ時」に変更してOK
最後にOKをクリックすると認証が求められる。
タスクが作成されると、アクティブなタスクとして登録される。
確認(OS再起動後の確認)
nvidia-smiコマンドで電力の上限が確認できる。
参考
nvidia-smi(1) で GPU にパワーリミットを設定して消費電力や発熱を減らす
https://blog.amedama.jp/entry/nvidia-smi-gpu-power-limit#GPU-%E3%81%AB%E3%83%91%E3%83%AF%E3%83%BC%E3%83%AA%E3%83%9F%E3%83%83%E3%83%88%E3%82%92%E8%A8%AD%E5%AE%9A%E3%81%99%E3%82%8B
おしまい。