GTC 2014で、Harvard-Smithsonian Center for AstrophysicsのDanny Price 氏が「Fire and Ice: How temperature affects GPU performance」と題する発表を行った。

南米チリに建設されたALMA電波望遠鏡と比べて1000倍以上のアンテナ面積を持つ「Square Kilometer Array(SKA)」という超高感度電波望遠鏡(図1)の建設が予定されている。ALMAは66基のアンテナから構成されているが、SKAでは約3000基のアンテナが必要となる。

これらのアンテナで受信した電波のデータ処理量はアンテナ数の2乗に比例するので、SKAでは膨大な計算が必要になる。この処理をGPUで効率よく行うのはどうすれば良いかを検討するというのが、この研究のモチベーションであるという。

図1 SKAのアンテナ(写真ではなく、アーティストストが描いたもの)

良く知られているように、LSIの消費電力には、回路の動作に伴うダイナミックな電力消費と漏れ電流によるスタティックな電力消費がある。ダイナミックな電力消費はCV2fで表され、電源電圧Vとクロック周波数fに依存するが、温度の影響はほとんどない。

一方、漏れ電流は、図2に示すように、赤丸で囲んだ2番目の項が絶対温度の2乗に比例して増加する。3番目の項は、温度が上昇すると減少するが、全体としては2番目の項が支配的で、漏れ電流は温度があがると増加する。

図2 漏れ電流は、赤丸で囲んだ項が絶対温度の2乗で増加する

冷却のコントロールとBIOS Tweekerで電源電圧、クロックを設定して測定

温度を変えた測定のため、図3に示すように、GK110チップを使う「Tesla K20m GPU」のヒートシンクを取り外し、水冷のブロックを取り付けている。水冷の水の流量を変えることでGPUチップの温度を変えることができる。なお、ヒートシンクを取り外す改造を行うとNVIDIAの保証は受けられなくなるので、通常はやってはいけない。

図3 温度の影響を調べるため、Tesla K20mのヒートシンクを取り外し、水冷のブロックを取り付けた

NVIDIAのSystem Management Interfaceを使い、K20m GPUの電源電圧とクロックの関係を測定したのが次の図4である。電源電圧を変えると、クロックは620MHzから760MHz程度まで変化する。

図4 K20m GPUの電源電圧とクロック周波数の関係。V4がデフォールト状態

そして、Kepler BIOS Tweeker V1.27を使って本来は許容されないV5の電圧までの測定を可能にしたという。

xGPUという電波天文の相関計算を行うベンチマークプログラムを用いて、GPUのGFlops性能を測定したのが、図5である。下側の線がCUDA 5.5の結果、上側の線はCUDA6.0での結果で、同じくロックでもCUDA 6.0の方が若干、性能が高くなっている。説明はなかったが、CUDA 6.0の方が最適化が改善されているためと思われる。

図5 電波天文用のxGPUベンチマークを用いたクロックとGPU性能の測定結果

電源電圧をV4とし、GPUチップの温度を変えて、消費電力を測定したのが次の図6である。

図6 705MHz、805MHz、905MHzクロックで測定した温度と消費電力の関係

705MHzのカーブを約14W上にあげ、905MHzのカーブを約14W下げると、3つのクロック周波数のカーブは重なり、漏れ電流によるスタティックな電力はクロック周波数によらないという理論通りの結果になっている。

各クロック周波数ともに、30℃に対して80℃では12W程度、消費電力が増加している。ただし、30℃で見ると、705MHzから905MHzでは周波数は23.8%増加しているのに、消費電力は19%程度しか増加していない。この理由は不明であるが、前の記事で紹介したNVIDIAのSMIの電力測定の問題が影響しているのかもしれない。