ELSA GeForce GTX 1050 2GB S.A.C
http://www.elsa-jp.co.jp/products/products-top/graphicsboard/geforce/midrange/geforce_gtx1050_2gb_sac/
ようやくグラボを増設した。
我輩、いまのPCを買った当時、
「GPU内蔵CPU(Ivy bridge)が22nnのFinFETなのに、わざわざ別料金払って40nmのプレーナプロセスのGPUを買うなんて、それなんか無駄な気がしね…?」
と言った。
つまりは
「2XnmのFinFETで作ったGPUのエントリーモデルが出ればすぐ買ってもいい」
とも言っていると読み替えてくれてもいい。
だが、それは出なかった。
当時PCのオプションはGeForce 650、40nmのプレーナプロセスのGPUだった。
次の世代は28nmにシュリンクしたが、プレーナプロセスのままだった。
その次の世代はアーキテクチャこそ異なるものの、同じく28nmのプレーナプロセスのGPUだった。
その次でようやく20nmか22nmでついにFinFETが出るかと思われたが、nVidiaはそのプロセスをスキップした(アップルがTSMCの生産キャパを買い占めたからというウワサもあるが真相不明)。
我が国のプロセスは富士通が京コンピュータのCPUのためだけに用意した45nm(外販できるレベルにプロセスが仕上がらなかったというウワサもあるが真相不明)が最後であり、
もはや外国の誰かさんが勝手にがんばって立ち上げたプロセスが使われるまで指をくわえて見ているしかなかった。
我輩は待った。
その次の14nm世代でようやくFinFETのGPUになった。
だがハイエンドモデルからの投入だった。
まあ当然だ。
もう少し、もう少しだけ待てば、エントリーモデルが出る。
そして、ついに、ファン1個のショートサイズ、別電源ケーブル不要のGeForce 1050が登場した。
本当は性能半分で1万2000円くらいのものでよいのである。
だが、GeForce 1040なるものはたぶん出ないであろうと考えた。
今後当面FinFET最安モデルになると思われるGeForce 1050を選択したのであった。
あとで聞いたのだが、グラボに詳しいヤツも
「1万くらいまで安いヤツにするとホントに安いだけになるし、1万円台半ばから2万くらいまでのがいちばんコストパフォーマンスいいよ」
と言っていた。
でだ。
GeForce 1050といっても各社ある。
日本で入手困難なものも含めると9社くらいだろうか。
ではどれを選べばよい?
まずメモリ。
ノーマルの2GBと4GBのTiなるモデルがある。
GBあたりの値段の差からいうと、DIMM換算で4倍違う。
GDDR5だからといって4倍出せるかというと…というのでやめた。
クロック。
もっと安くて低性能でいいくらいなので、安定して動くオーバークロックではないモデルであること。
寸法。
ショートサイズであること必須。
で、ここまででもまだ6銘柄くらいのこる。
で、我輩が注目したのはヒートシンク。
グラボの前面パネルは2スロット占有する。
だが1スロット分は単に換気の穴が開いているだけのものがほとんどである。
だからといって意味がないわけではなく、それで冷えてもらうのだ。
だが。
ほとんどのグラボのヒートシンクのカバーは前面パネルまで伸びておらず、途中で止まってしまっている。
「これグラボ単体で熱設計したら冷えるかもしれんけどケースに入れたら冷えないだろwww」
と思った。
この条件を満たすグラボはELSAともう1種類だけだった。
けっきょくELSAにした。
届いたのでさっそくヒートシンクを確認。
これはすごくよくできている!!!
ヒートシンクは横についているフィンにも熱を逃がさないといけないので、横方向にも熱伝導性が必要なのだが、それを重視しすぎるとフィンが短くなるというトレードオフがある。
このELSAのグラボは、中央だけ分厚くて脇にいけば薄くなるという、熱設計がちゃんとわかってるヤツでないとやらないような構造になっている。
これはすばらしい。
こいつはとりあえず動けばいい的なノータリンの設計したグラボでは断じてない。
若干高めなのだがその価値はある。
と、こんな話を先のグラボに詳しいヤツにしたのだが、
「そんなところまで見るのはおまえだけだwww」
と言われた。
そりゃまあ我輩は会社で熱流体解析してるくらいだしな(笑)。
ただ、デメリットもあった。
このELSAのグラボは与えられた寸法をギリギリまで活用しているため、特定のPCの特定のスロットにはマザボの部品が邪魔でちゃんと刺さらないという設計になっていた。
機械的寸法にも相性問題があったとは…。
ちなみに裏面はこんな感じ。
大容量のチップコンデンサを実装できるようになっているパッドだけ存在する箇所がいくつもある。
これは、あとでコンデンサを追加しないと動かなかった場合のリスク回避としてボードの設計段階で用意したものであり、製品ではコストダウンのためマトモに動くギリギリまでコンデンサを削除して出荷している残骸である。
つまり、安定動作に問題がある場合、ここに自力でコンデンサを追加してやれば安定性が向上するかもしれん、ということだ。
ふつうCPUをオーバークロックで使っている人でもボードにハンダづけしてまで改造しようというヤツはほとんどいないけどな。
あと、DC/DCコンバータのインダクタも磁気シールドタイプを使っているように見える。
こいつは空気中にノイズをまき散らしにくい反面、少し値段が高い。
そういう意味でもELSA製は若干高いだけのことはある。
さてベンチマーク。
世間でのグラボのベンチマークの方法はすでに確立しており、
そのツールをダウンロードして実行しておしまいなのがふつうである。
だがそれでは中身がよくわからない。
ツールを作ったヤツの思惑に大幅に左右されうる。
だいたい何をやっているのかすらよくわからんベンチマークツールすらある。
たとえばfloatだけベンチマークしてdoubleでは遅いのは性能バラさずにスルーしてすます、なんてのは恐らく誰でもやる。
そこでだ。
我輩が自らCUDAでベンチマークをとるコードを書けばいいじゃないかということになった。
じつは我輩ちょっとだけCUDA使えるという理由からRadeonはもとより眼中になかったという逆の理由もそこにはある。
ベンチマークの方法は以下のとおり。
シングルスレッドのCPU(Xeon E31275 3.4GHz 会社で使用しているPCで自宅用ではない)で行列演算を行った時間をリファレンスとし、GPGPU用プログラミング言語CUDAでフルスクラッチで自作した関数の実行時間と、NVIDIA提供のcuBLASライブラリによる実行時間の双方で比較した。
演算サイズは4~5種類。
GPUはdoubleの演算は遅いため、floatとdoubleの双方を比較した。
作った。
実行した。
おどろいた!!!
我輩がPCを買った当時のグラボと比べて1桁速い。
だいたい「桁違いに~」と形容詞がついてもだいたい2~3倍にしかなっとらんこともしばしばだが、こいつは真の意味において桁違いに速い。
それに前の世代と比較してすら倍速い。
恐らく900番台の2ランク上のグレードと同等だろう。
いまのCPUがIvy bridgeから1桁速くなっているとはとても考えにくいので、グラボの進化はかなり急激である。
まあ、GPU単体が速いのではなく、GDDR5が速いのもあるけれど。
以下、細かい違い。
GPGPUで演算を行うとピーク性能で数千倍の高速化が得られるが、使いかた次第で効果が得られない場合がある。
演算量が非常に大きく、floatの場合、効果が得られやすい。
Quadro 600の次の世代のQuadro K600では演算性能の差があまり見られない。プロセスが微細化しているのに電力も性能も据え置きとはガッカリという感がある。
Kepler世代はピーク性能重視の改良とどこかに書いてあったような気がするのだが、それに関係あるのかもしれない。
さらに次の世代のQuadro K620では数倍の高速化が得られる。
最新世代のGeforce 1050ではQuadro K620よりさらに倍速い。
ただしcuBLAS floatでは倍は速くなっていない。
これはGPUコアよりメモリがGDDR3からGDDR5になってメモリバンド幅が上がったことによる性能改善の度合いのほうが大きいことによるものだと推測される。
たしかMaxwell世代は実行性能重視の改良と書いてあったのを見たような気がする。
NVIDIA提供のcuBLASライブラリを使うとfloatなら自作関数より10倍高速化するが、doubleだと効果が小さくなり、Quadro K620やGeforce 1050のdoubleではほとんど変わらなくなる。
これは、floatではDRAMとの通信が支配的であり、そこがCUDAのコーディングノウハウとなるのだが、doubleでは演算ユニットのほうが支配的になるため、演算の順番を入れ替えても速くなりようがないからではなかろうかと推測される。
また世代が新しくなるごとにfp64のALUの比率が減っているのが気になる。
まとめ。
GeForce 1050はすばらしく速いので買って損はしない。
銘柄はヒートシンクのよくできているELSAがオススメ。
艦これ提督にそれがいるんかという話はあるけれど(笑)。