デフォルト設定のGPUは動作クロックが200MHzぐらいから2000MHz(2GHz)ぐらいまで随時変動します。
動作クロックが10倍変わると、ベンチマークのスコアも10倍変わります。CUDAや3D描画の性能測定を行う場合はまず動作クロックを固定すべきです。
動作クロックの確認方法
nvidia-smi コマンドを使います
$ nvidia-smi -q -d CLOCK
現在のクロックは "Clocks"の項目に出力されます
Clocks Graphics : 210 MHz SM : 210 MHz Memory : 405 MHz Video : 555 MHz
クロックの上限値は"Max Clocks"に出力されます
Max Clocks Graphics : 2100 MHz SM : 2100 MHz Memory : 9751 MHz Video : 1950 MHz
動作クロックの固定方法
nvidia-smiコマンドを使います
graphicsとmemoryのクロックが設定できます.
root権限が必要なのでsudoを使います
$ sudo nvidia-smi --lock-graphics-clocks=2100 $ sudo nvidia-smi --lock-memory-clocks=9751
確認
クロックを再確認します
$ nvidia-smi -q -d CLOCK
>|txt
Clocks
Graphics : 1965 MHz
SM : 1965 MHz
Memory : 9751 MHz
Video : 1725 MHz
|
メモリのクロックはMax Clocksの値を設定できましたが,graphicsのクロックはMax Clocksの値になっていません
ネットで調べると
forums.developer.nvidia.com
nvidiaの中の人が、
There is no guarantee that you can achieve the maximum frequency on any particular GPU.
と回答してました.こういう仕様だそうです.これは諦めたほうが良さそうです.