自作PCに何かグラボを入れたいと思い、GTS250を装着しました。
それで色々調べてみるとこのグラボ、CUDA Toolkitは使えても6.5までのバージョンしか対応してないっぽいです。
おまけにこのグラボ2009年に製造されたようで起動時に一瞬以下の画面が表示されました。
ディープラーニングをするには最低7.5以上は必要ですのでこれだと難しいなと断念することに…
でなにかいいグラボないかと仕事終わりに伏見のハードオフで物色をしていたらNVIDIA Quadro K2000を見つけました。
Quadroはゲーム向けではなく業務用のCAD向けでOpen GLに強いモデルらしいです。
Quadro K2000は2013年頃に発売されているのでそこそこ古いですが、ディープラーニングに最適なグラボとしても紹介されるのでお試しで買ってみました。価格は中古で4400円(税込)でした。今の中古相場だと7000円近くなのでまあまあといったところでしょう。
ちなみに店舗にはGTXも箱入りでありましたが8800円もしたので迷いましたが、年代的に近かったので安かったQuadroを選びました。久々にハードオフ行きましたけど、相変わらず価格設定ガバガバですよね。
取り付け
早速自作PCに取り付けました。
GTS250よりも薄いのと補助電源がいらないので、だいぶ見た目がスッキリしました。
接続はDVIからやってみましたが、問題なく動作して画面も出力しました。ご覧の通りデバイスも認識してます
01:00.0 VGA compatible controller: NVIDIA Corporation GK107GL [Quadro K2000] (rev a1) 01:00.1 Audio device: NVIDIA Corporation GK107 HDMI Audio Controller (rev a1)
ドライバーのインストール
デバイスは認識しましたが、Ubuntuを使っているのでグラボのドライバーは手動で当てる必要があります。
というわけでドライバーをインストールします。
普通はコマンドラインをつかいますが、UbuntuであればGUIでインストールできます。
ソフトウェアとアップデート→追加のドライバ
を開くとドライバーのインストール画面が開きます。
するとグラボのドライバーが自動検索で出力されます。
そこから検証済み
と表示されているドライバーをインストールしておきます。このドライバーがどうやら最新版みたいです。
ドライバーを選択したら変更の適用
をクリックします。するとインストールをしてくれて、終わるとボタンがグレー表示になります。
一度再起動をして、設定→このシステムについて
をクリックして以下のようにグラボのモデル名が表示されたらドライバーは正常にあたっています。
ベンチマーク
グラボ取り付けたのでベンチマークをやってみます。
Linuxのベンチマークはあまりよく知らない(というかベンチマーク自体やったことないw)のであれこれ調べてみましたが、フリーで手軽に試せるソフトとしてGLmark2を見つけました。
インストールは以下のコマンドでできます。
sudo apt install glmark2
実行はglamark2
をコマンドで実行するだけです。
実はドライバーがあたってないときに先に動かしてみましたが、その時のスコアは500程度でした(実行結果は取り忘れました)。おそらくintelの内蔵グラフィックを使っているからだと思います。
調べてみると、GLmark2のスコア一覧が出てきましたが、ビンゴでした。GLmark2のバージョンが違うのでなんとも言えませんがそんな大幅に変わることはないと思うので目安としてはちょうどいいでしょう。
で改めてGPUのドライバーを当ててサイド実行してみました。
ところがこんなエラーが出ました。
Error: Failed to add fragment shader from file None: Error: 0(15) : error C0000: syntax error, unexpected identifier, expecting "::" at token "highp" Error: 0(36) : warning C1503: undefined variable "TextureCoord" Error: 0(37) : warning C1503: undefined variable "TextureCoord" Error: 0(38) : warning C1503: undefined variable "TextureCoord"
ググってみましたが、同じような問題を抱えている人もいましたが解決はできませんでした。
あれこれ模索していたらglmark2-es2というOpen GL ES2のパフォーマンスを測定するソフトがあるようなので、ダメ元でインストールしてみました。
sudo apt install glmark2-es2
実行は同様にglmark2-es2
と実行するだけです。
するとエラーはなく、以下の実行結果がでました。
======================================================= glmark2 2021.02 ======================================================= OpenGL Information GL_VENDOR: NVIDIA Corporation GL_RENDERER: Quadro K2000/PCIe/SSE2 GL_VERSION: OpenGL ES 3.2 NVIDIA 470.57.02 ======================================================= [build] use-vbo=false: FPS: 3491 FrameTime: 0.286 ms [build] use-vbo=true: FPS: 4435 FrameTime: 0.225 ms [texture] texture-filter=nearest: FPS: 4044 FrameTime: 0.247 ms [texture] texture-filter=linear: FPS: 3999 FrameTime: 0.250 ms [texture] texture-filter=mipmap: FPS: 4088 FrameTime: 0.245 ms [shading] shading=gouraud: FPS: 3760 FrameTime: 0.266 ms [shading] shading=blinn-phong-inf: FPS: 3782 FrameTime: 0.264 ms [shading] shading=phong: FPS: 3609 FrameTime: 0.277 ms [shading] shading=cel: FPS: 3618 FrameTime: 0.276 ms [bump] bump-render=high-poly: FPS: 2599 FrameTime: 0.385 ms [bump] bump-render=normals: FPS: 4396 FrameTime: 0.227 ms [bump] bump-render=height: FPS: 4293 FrameTime: 0.233 ms [effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 3099 FrameTime: 0.323 ms [effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 1996 FrameTime: 0.501 ms [pulsar] light=false:quads=5:texture=false: FPS: 3842 FrameTime: 0.260 ms [desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 1483 FrameTime: 0.674 ms [desktop] effect=shadow:windows=4: FPS: 2316 FrameTime: 0.432 ms [buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 1098 FrameTime: 0.911 ms [buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 1318 FrameTime: 0.759 ms [buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 1265 FrameTime: 0.791 ms [ideas] speed=duration: FPS: 3391 FrameTime: 0.295 ms [jellyfish] <default>: FPS: 2290 FrameTime: 0.437 ms [terrain] <default>: FPS: 335 FrameTime: 2.985 ms [shadow] <default>: FPS: 3094 FrameTime: 0.323 ms [refract] <default>: FPS: 837 FrameTime: 1.195 ms [conditionals] fragment-steps=0:vertex-steps=0: FPS: 3982 FrameTime: 0.251 ms [conditionals] fragment-steps=5:vertex-steps=0: FPS: 3503 FrameTime: 0.285 ms [conditionals] fragment-steps=0:vertex-steps=5: FPS: 3979 FrameTime: 0.251 ms [function] fragment-complexity=low:fragment-steps=5: FPS: 3976 FrameTime: 0.252 ms [function] fragment-complexity=medium:fragment-steps=5: FPS: 3500 FrameTime: 0.286 ms [loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 3894 FrameTime: 0.257 ms [loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 3947 FrameTime: 0.253 ms [loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 3756 FrameTime: 0.266 ms ======================================================= glmark2 Score: 3121 =======================================================
うん、明らかにスコアが上がりました。ちゃんとGPU使えていますね。
先程のスコア一覧で見ると大体中間ぐらいのスペックですね。
同じNVIDIA製品だとNVIDIA Quadro P2000のスコアと近いです。
多分これなら安定して3Dのシュミレータも動かせると思います。
というわけで次回からはROSを久々に触ってみようと思います。