IBM System x3105 4347-22J にGeForce GT710を取り付けてみた。

IBM System x3105 4347-22J に玄人工房から発売されているnVidia Geforce GT710 搭載グラフィック拡張カード(GF-GT710-E2GB/LP/P)を取り付けてみた。

このグラフィックカードは、センサーなしファン付きであり、PCI Express x8 スロットに取り付け可能なモデルとなっている*1

取り付け

ブラケット抑えのブラスチックに経年劣化があるので、壊さないように注意深く作業する。
マザーボード基板の取り付け位置に個体差があるので案の定というか斜めって接触不良で認識できないこともありえるので、エッジ両端の刺さり具合に注意する。
基盤を取り付けたら、ボタン電池交換をしてC-MOSクリアをして、BIOSデフォルトロードを実施する。
増設グラフィックカードが認識されていないと内蔵グラフィックから出力があるが、認識がうまくゆくと増設グラフィックのみの出力となった。

ベンチマークテスト

UbuntuのAPTリポジトリにてglmark2というベンチマークテストが配信されていたので、インストールしてみた。

Package: glmark2
Version: 2014.03+git20150611.fa71af2d-0ubuntu7
Priority: optional
Section: universe/misc
Origin: Ubuntu
Maintainer: Ubuntu Developers 
Original-Maintainer: Alexandros Frantzis 
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Installed-Size: 1,086 kB
Depends: libc6 (>= 2.27), libgcc-s1 (>= 3.0), libgl1, libjpeg8 (>= 8c), libpng16-16 (>= 1.6.2-1), libstdc++6 (>= 5.2), libx11-6, glmark2-data (= 2014.03+git20150611.fa71af2d-0ubuntu7)
Homepage: https://launchpad.net/glmark2
Download-Size: 294 kB
APT-Manual-Installed: yes
APT-Sources: http://jp.archive.ubuntu.com/ubuntu focal/universe amd64 Packages
Description: OpenGL 2.0 X11 benchmark
 A benchmark for OpenGL (ES) 2.0 that uses only the OpenGL ES 2.0 compatible
 API. It contains tests for standard OpenGL (ES) 2.0 features, such as vertex
 arrays, VBOs, texturing and shaders.
 .
 This package contains the OpenGL 2.0 variant of the benchmark for X11.

ということで、ターミナルウィンドウより

glmark2

とコマンドラインを入力すると、800x600のウィドウが開いてアニメーションがレンダリングされ、ターミナルウィンドウ内に以下の結果が得られる。

=======================================================
    glmark2 2014.03+git20150611.fa71af2d
=======================================================
    OpenGL Information
    GL_VENDOR:     NVIDIA Corporation
    GL_RENDERER:   GeForce GT 710/PCIe/SSE2
    GL_VERSION:    4.6.0 NVIDIA 440.64.00
=======================================================
[build] use-vbo=false: FPS: 1648 FrameTime: 0.607 ms
[build] use-vbo=true: FPS: 2722 FrameTime: 0.367 ms
[texture] texture-filter=nearest: FPS: 2042 FrameTime: 0.490 ms
[texture] texture-filter=linear: FPS: 2026 FrameTime: 0.494 ms
[texture] texture-filter=mipmap: FPS: 2207 FrameTime: 0.453 ms
[shading] shading=gouraud: FPS: 1889 FrameTime: 0.529 ms
[shading] shading=blinn-phong-inf: FPS: 1897 FrameTime: 0.527 ms
[shading] shading=phong: FPS: 1866 FrameTime: 0.536 ms
[shading] shading=cel: FPS: 1876 FrameTime: 0.533 ms
[bump] bump-render=high-poly: FPS: 1371 FrameTime: 0.729 ms
[bump] bump-render=normals: FPS: 2621 FrameTime: 0.382 ms
[bump] bump-render=height: FPS: 2540 FrameTime: 0.394 ms
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 1552 FrameTime: 0.644 ms
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 779 FrameTime: 1.284 ms
[pulsar] light=false:quads=5:texture=false: FPS: 2309 FrameTime: 0.433 ms
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 668 FrameTime: 1.497 ms
[desktop] effect=shadow:windows=4: FPS: 1119 FrameTime: 0.894 ms
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 208 FrameTime: 4.808 ms
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 238 FrameTime: 4.202 ms
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 252 FrameTime: 3.968 ms
[ideas] speed=duration: FPS: 2054 FrameTime: 0.487 ms
[jellyfish] : FPS: 1156 FrameTime: 0.865 ms
[terrain] : FPS: 134 FrameTime: 7.463 ms
[shadow] : FPS: 1699 FrameTime: 0.589 ms
[refract] : FPS: 305 FrameTime: 3.279 ms
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 1895 FrameTime: 0.528 ms
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 1842 FrameTime: 0.543 ms
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 1895 FrameTime: 0.528 ms
[function] fragment-complexity=low:fragment-steps=5: FPS: 1844 FrameTime: 0.542 ms
[function] fragment-complexity=medium:fragment-steps=5: FPS: 1842 FrameTime: 0.543 ms
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 1844 FrameTime: 0.542 ms
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 1844 FrameTime: 0.542 ms
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 1842 FrameTime: 0.543 ms
=======================================================
                                  glmark2 Score: 1576 
=======================================================

このスコアが早いのか遅いのか知り得る術もないのであるけど、実行中において普通に3D CGのアニメーションが再生できているので、古くて遅いコンピュータも画面だけは普通の速さになった気がする。

なおウィンドウサイズを変更してテストしてみたい場合は、--size WxH若しくは--fullscreenのオプションが利用できる。またその他オプションについて詳細はmanを参照されたし。

ちなみに1680x1050での結果は以下の通り

glmark2 --fullscreen
=======================================================
    glmark2 2014.03+git20150611.fa71af2d
=======================================================
    OpenGL Information
    GL_VENDOR:     NVIDIA Corporation
    GL_RENDERER:   GeForce GT 710/PCIe/SSE2
    GL_VERSION:    4.6.0 NVIDIA 440.64.00
=======================================================
[build] use-vbo=false: FPS: 909 FrameTime: 1.100 ms
[build] use-vbo=true: FPS: 1064 FrameTime: 0.940 ms
[texture] texture-filter=nearest: FPS: 864 FrameTime: 1.157 ms
[texture] texture-filter=linear: FPS: 861 FrameTime: 1.161 ms
[texture] texture-filter=mipmap: FPS: 878 FrameTime: 1.139 ms
[shading] shading=gouraud: FPS: 834 FrameTime: 1.199 ms
[shading] shading=blinn-phong-inf: FPS: 834 FrameTime: 1.199 ms
[shading] shading=phong: FPS: 833 FrameTime: 1.200 ms
[shading] shading=cel: FPS: 834 FrameTime: 1.199 ms
[bump] bump-render=high-poly: FPS: 767 FrameTime: 1.304 ms
[bump] bump-render=normals: FPS: 1013 FrameTime: 0.987 ms
[bump] bump-render=height: FPS: 986 FrameTime: 1.014 ms
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 479 FrameTime: 2.088 ms
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 227 FrameTime: 4.405 ms
[pulsar] light=false:quads=5:texture=false: FPS: 627 FrameTime: 1.595 ms
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 222 FrameTime: 4.505 ms
[desktop] effect=shadow:windows=4: FPS: 359 FrameTime: 2.786 ms
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 180 FrameTime: 5.556 ms
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 230 FrameTime: 4.348 ms
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 213 FrameTime: 4.695 ms
[ideas] speed=duration: FPS: 720 FrameTime: 1.389 ms
[jellyfish] : FPS: 410 FrameTime: 2.439 ms
[terrain] : FPS: 56 FrameTime: 17.857 ms
[shadow] : FPS: 676 FrameTime: 1.479 ms
[refract] : FPS: 152 FrameTime: 6.579 ms
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 907 FrameTime: 1.103 ms
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 878 FrameTime: 1.139 ms
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 907 FrameTime: 1.103 ms
[function] fragment-complexity=low:fragment-steps=5: FPS: 907 FrameTime: 1.103 ms
[function] fragment-complexity=medium:fragment-steps=5: FPS: 863 FrameTime: 1.159 ms
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 907 FrameTime: 1.103 ms
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 907 FrameTime: 1.103 ms
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 907 FrameTime: 1.103 ms
=======================================================
                                  glmark2 Score: 679 
=======================================================

デフォルトの解像度の時に比べて、桁違いに演算時間を要していることが分かる。
単純なテストであっても一部60fpsを割り込んでいる結果も見受けられるので、現時点のシステム構成では解像度の調整がアニメーションの前提条件となる。

蛇足

今回はlubuntu 20.04で試用してみたが、CUDA開発環境 10.2(のテンソルフロー関係)がclang8(gcc8)およびPython 3.6に依存している。これがまた非常に頭の痛くなる問題点をよびおこし、OpenMPのバージョンが1つだけしか存在できないのにLLVMのバージョンが複数存在するといった目の当てられない状況に招き入れてくれる。
CUDA環境を優先させてOS環境を構築するならば18.04系のバージョンを選択したほうが手っ取り早い。