Linux:nvidia-smiで制限する
対応GPUなら、コアクロックとメモリクロックの範囲を直接指定できます。root権限が必要です。GPUクロックのロックはVolta世代以降でサポートされていますが、製品・ドライバによっては Not Supported になります。(NVIDIA Docs)
1. GPUと対応クロックを確認
nvidia-smi -L
sudo nvidia-smi -q -d SUPPORTED_CLOCKS
sudo nvidia-smi -lmi
2. コアクロックを制限
GPU 0を、最低300MHz~最大1500MHzに制限する例です。
sudo nvidia-smi -i 0 --lock-gpu-clocks=300,1500
1500MHzに固定する場合:
sudo nvidia-smi -i 0 --lock-gpu-clocks=1500
単一値を指定すると固定動作になるため、アイドル時もクロックが下がりにくくなります。通常は 最低値,最大値 の範囲指定が適しています。(NVIDIA Docs)
3. メモリクロックを制限
最低810MHz~最大5000MHzの例:
sudo nvidia-smi -i 0 --lock-memory-clocks=810,5000
5000MHz固定:
sudo nvidia-smi -i 0 --lock-memory-clocks=5000
メモリクロック制御はGPUによって非対応です。また、Hopper系GPUでは通常の --lock-memory-clocks ではなく、遅延適用方式が必要です。(NVIDIA Docs)
4. 状態を監視
watch -n 1 'nvidia-smi --query-gpu=index,name,clocks.gr,clocks.mem,power.draw,temperature.gpu --format=csv'
5. 元に戻す
sudo nvidia-smi -i 0 --reset-gpu-clocks
sudo nvidia-smi -i 0 --reset-memory-clocks
クロック制御が非対応の場合
消費電力を下げることで、間接的にブーストクロックを制限できます。
nvidia-smi -q -d POWER
sudo nvidia-smi -i 0 --power-limit=150
指定値は表示される Min Power Limit~Max Power Limit の範囲内にする必要があります。(NVIDIA Docs)