概要

近年深層学習を含めGPU(Graphics Processing Unit)を用いた並列計算が盛んであるが,それはそうとして冬は熱燗の時期である. 本研究ではグラフィックボードのファンを取り外し徳利を設置し,行列計算等の計算を行うことでGPU温度を高め燗をつけた.

実験構成

概要

グラボのファンを取り除いて徳利を置き燗をつける.

GPU上で計算(以降「燗計算」と呼ぶ.)を行う. 燗計算としてはGEMM (GEneral Matrix Multiply)計算やN体問題,ジュリア集合計算などを実装した. 一般に高効率で最適な並列数のプログラムほど消費電力が高い. 今回は効率的な加熱を行うため最適並列数などの複数のパラメータについてグリッドサーチを行うプログラムを作成した.

ハードウェア

部品 型番
CPU AMD Athlon 200GE
M/B MSI A320M PRO-VD/S
RAM DDR4 2666MHz PC4-21300 8GB
SSD Kingston SSD SA400S37/120G
Graphics ASUS GTX650-E-1GD5
グラボ置き 学位記

atsukan-server-0 atsukan-server-1 atsukan-server-2

ソフトウェア

OS

ArchLinux

uname -a
Linux 4.19.8-arch1-1-ARCH #1 SMP PREEMPT Sat Dec 8 13:49:11 UTC 2018 x86_64 GNU/Linux

プログラム

監視スレッドは燗関数計算スレッドを立ち上げ,GPU温度や消費電力の測定を行う.

atsukan-flow

プログラムの大まかな仕様

  • プログラムの引数として燗関数の種類(GEMM,N体問題等),燗関数へのパラメータ(並列数や問題サイズ等),計算型(float/double),実行時間を指定できる
  • プログラムの引数としてパラメータ探索を行うよう指定でき,グリッドサーチを行う
  • プログラムの引数として出力モードを切り替えることができ,人間に優しい表示かデータ処理をしやすいようカンマ区切り形式での標準出力を行う

実験

実験1. GPUとの接触について

はじめにグラフィックボードからファンとヒートシンクを取り除きグリスを塗り徳利(平底フラスコ)に水を入れ加熱しました. が,燗計算を行う前にGPUの温度が上昇しデバイスをロストしました.

atsukan-touch-0 atsukan-touch-1

適度に冷却した上で実験を行わないといけないようですね. そのため以降の計算ではヒートシンクをGPUととっくりの間に挟み,適度に冷却を行いながら実験を行いました.

実験2. GPU温度と液体温度の関係

加熱対象を水/日本酒(料理酒:13度)とし,温度計を挿入後GEMM計算を行いながら温度を測定した. 加熱対象は初期温度からの温度上昇を,GPU温度はそのままの温度をグラフにしたものが下図である.

GEMMの問題サイズを大きくしすぎるとGPUがロストするので適切な問題サイズで実験は行った.(3つのN×N行列のGEMM計算でN=64,液量は45mL)

atsukan-temperature

お酒のほうが比熱が低いので早く温まるかなと思っていたけど微妙です. 室温も関係しそうだけど一定にするのしんどい.

実験3. 燗をつけるぞ!!

GEMM! GEMM! GEMM!!

atsukan-kanpai-0 atsukan-kanpai-1

燗関数と問題サイズを適切に選んで45度程度に上げました.

私はすっかりお酒を飲めなくなってしまったのでお寿司だけいただきました.

今後の課題

  • 冷却を適切に行なった上で徳利に熱が移動する冷却構造を考案し,最高消費電力を叩き出すパラメータで熱燗を沸かしたい
  • ハイエンドなGPUでないと消費電力等をNVML APIで取得できないため,壊してもいいハイエンドなGPUを手に入れたい
  • 温度を一定に保つよう温度計と燗計算を連動させたい
  • いい加減お酒をまた飲めるようになりたい
    夏に北海道の余市蒸溜所で飲みすぎて小樽駅のホームとトイレで死にそうな3時間を過ごしたことやいろいろなことを引きずっているのをどうにかしたいです....

終わりに

今回燗をつけるために用いたGPUがKepler世代のもので,SFUを始めとしたいろいろなものが使えずびっくりしました. きっと数年後にはPascal世代に触れてTensorCoreが使えなくてびっくりしたりするんでしょうね.

自分の書いたGPU上で走るカーネル関数が出す熱で燗をつけるということではじめましたが,自分の作った石で熱燗とか作ってみたいですね. 最近話題のMN-CoreのP社とかPxxx-SCxのP社の方々は大きなI社やA社より自分たちが石を作っている実感を得られた上で熱燗を作れるでしょうし羨ましいです.

本実験では以下のことを得ました

  • 冬になるとArchLinuxのインストールバトルをしたくなる私の満足感
  • 先端ソフトウェア工学の課題プログラム
  • GPUの性質
  • ヒートシンクとファンのありがたさ
  • 熱燗とお寿司

謝辞

研究室で自分の研究の進捗も生まずに熱燗づくりに没頭している私にアドバイスをしてくださった研究室の先生に感謝いたします. また,メモリアクセス頻度の話など助言してくださったバイト先の方々にも感謝いたします. 最後に断酒状態の私の代わりに作った熱燗を飲んでくれた父親に感謝します.

参考文献

  • Zhe Jia, Marco Maggioni, Benjamin Staiger, Daniele P. Scarpazza : Dissecting the NVIDIA Volta GPU Architecture via Microbenchmarking, arXiv:1804.06826