Chienomi

Quadro2000 + GeForce GTX750Ti with Linuxで5面ディスプレイ

xorg

  • TOP
  • Old Archives
  • Quadro2000 + GeForce GTX750Ti with Linuxで5面ディスプレイ

まえがき

Quadro2000は出力ポートを3つ持っているものの、出力は2系統で2面しか出ない。 これが不便すぎたので、GeForce GTX750Tiを導入した。

750Tiは2世代前の性能の低いビデオカードだが、消費電力、発熱量が少なく、補助電源も必要ない。 あまり余裕のない既存システムの拡張は比較的行いやすいカードだ。 2スロットカードだが、GT720にすれば1スロットで接続できる。

750Tiの基本的な出力は、4k1面を含む3ディスプレイ、CRTのものとDFPのものがあるようだ。 また、4k3面を含む4面ディスプレイのモデルも存在する。

性能的にはQuadro2000がFermiチップで実に4世代前なので、2世代前とはいえかなり隔たりがある。 そのため、OpenGL性能の高いQuadroとはいえ、当時の中堅モデルでしかなかったGTX750TiのほうがOpenGLにおいても性能はだいぶ高い。 ビデオエンコーディング作業の時間短縮も狙った。 単にディスプレイの追加だけであれば、最悪2枚同時動作が叶わず交換となったとしても、720で3面出力は可能だが、 750Tiを選択することでその場合でも性能向上が可能となるようにした。

前知識

NVIDIAのマルチグラフィックスといえばSLIだが、これは単なるマルチグラフィックスを意味するものではないらしい。

SLIは、複数のビデオカードをケーブル接続することによって、画面描画を分担するものである。 そのため、画面出力を行うビデオカードは1枚、であるそうだ。

SLIは「複数ビデオカードを同時利用する技術」ではなく、「複数ビデオカードで並列演算する技術」であるという理解でおそらく正しい。 しかし、SLI接続されていない複数のビデオカードで演算する方法としてMulti-GPUも用意されているようだ。

以前はLinuxにおいて複数(場合によっては多数)のビデオカードを使って多数のディスプレイを出す方法としてXineramaがあった。 だが、最新のnvidiaドライバではこれが無効である、との説明がある。 設定方法などもかなり変更があったようで、2014年頃のドキュメントは役に立たない。

それ以外の方法として、TwinViewもあるが、これはあくまでひとつのビデオカードで2面を使う方法であり、それはわざわざ使うほどのものではない。

Base Mosaic及びSLI Mosaicは複数のNVIDIAビデオカードに接続されたディスプレイをひとつのスクリーンにまとめる。 NVIDIAの説明を見る限りはこれはディスプレイの実際の間隔を反映して表示する(ベゼルの幅などで画面と画面の間にある幅や、ディスプレイの角度を理解して3Dグラフィックスを表示する)技術に読めるのだが、少なくともLinuxではマルチディスプレイテクノロジーであるらしい。

うまくいかない

Windowsでは何の苦労もない。ドライバーインストールだけでできた。

ところが、Linuxではうまくいかなかった。Base Mosaicであれ、MultiGPUであれ、この調子だ。

[    19.599] (EE) NVIDIA(GPU-0): Failed to find a valid Base Mosaic configuration.
[    19.599] (EE) NVIDIA(GPU-0): Invalid Base Mosaic configuration 1 of 1:
[    19.599] (EE) NVIDIA(GPU-0): GPUs:
[    19.599] (EE) NVIDIA(GPU-0):     1) NVIDIA GPU at PCI:15:0:0
[    19.599] (EE) NVIDIA(GPU-0):     2) NVIDIA GPU at PCI:40:0:0
[    19.599] (EE) NVIDIA(GPU-0): Errors:
[    19.599] (EE) NVIDIA(GPU-0):     - GPU PCI IDs do not match
[    19.599] (WW) NVIDIA(GPU-0): Failed to find a valid Base Mosaic configuration for the
[    19.599] (WW) NVIDIA(GPU-0):     NVIDIA graphics device PCI:15:0:0. Please see Chapter 28:
[    19.599] (WW) NVIDIA(GPU-0):     Configuring SLI and Multi-GPU FrameRendering in the README
[    19.599] (WW) NVIDIA(GPU-0):     for troubleshooting suggestions.

だいたい

[ 19.599] (EE) NVIDIA(GPU-0): GPUs: [ 19.599] (EE) NVIDIA(GPU-0): 1) NVIDIA GPU at PCI:15:0:0 [ 19.599] (EE) NVIDIA(GPU-0): 2) NVIDIA GPU at PCI:40:0:0

の意味がわからない。なぜならば

lspci | grep VGA
0f:00.0 VGA compatible controller: NVIDIA Corporation GF106GL [Quadro 2000] (rev a1)
28:00.0 VGA compatible controller: NVIDIA Corporation GM107 [GeForce GTX 750 Ti] (rev a2)

と食い違うし、かといって0f:00:028:00:0を指定するとXが起動しない。 結局ずっとこのあたりでつまずくことになり、解決できなかった。

Manjaroのフォーラムでその苦労が見られたりする。

結局どうもQuadroクラスのカード以外はそもそもNVIDIA Mosaic Technologyに対応しない、ということのようなのだが、MultiGPU

</ins>

暫定的な方法

Xineramaは使えない、という記述があるのだが、実際はそんなことはなかった。 ただし、単にXineramaを使ってしまうと、同じスクリーンにあるディスプレイは1枚とみなされてしまう(つまり、2枚接続されているQuadro2000の部分は3840x1080の1枚のディスプレイということにされてしまう)。 見づらい上に使いにくい。

それぞれのディスプレイを違うスクリーンに割り当てれば大丈夫だが、

  • ものすごく遅い
  • とっても不安定
  • Conkyのウィジットが更新時に点滅する
  • randrによる設定ができない

MultiGPUも使えないことだし、1枚でまかなえる3画面までの話であれば普通にGTX750Ti単独にしたほうがはるかに良いように思える。

また、不安定の内容としてはChromium/Google Chromeなどが特にひどく、

  • ウィンドウ移動時にウィンドウハンドルと1画面以上ずれる
  • ウィンドウラベルをダブルクリックすると右に1画面程度ジャンプする
  • 左側のディスプレイ(GTX750Ti上)に出すとブラックアウトしたりする
  • YouTube再生がしょっちゅう止まる

といった問題が発生する。そのほかにもCinnamonが時々クラッシュしたりもする。 Gtkのウィジットの描画が欠損したりもする。

Chromiumのワークアラウンドとしては、「システムタイトルバーと枠線の使用」を音にすれば改善する。 これはVivaldiでも同様である。

</ins>

問題の根幹

Base Mosaicは対応するidentical(全く同一の) cardでなければならない、ということらしい。

異なるカード間でBase Mosaicを構成することはできず、まだ、

PCI IDs do not match.

でいうIDとは、BusIDのことではなく、Product IDのことであるとのこと。

また、MultiGPUも同様の制限がある(これは調べてもSLIに関することばかりで出てこない)とのこと。

結論

  • hp Z400でGeForce GTX750Tiは動作する
  • Quadro2000とGeForce GTX750Tiは同時に動作する
  • Windowsでは特になにもしなくても(ドライバーアップデートは必要だった)それぞれにつないだディスプレイが出る
  • Linuxの場合、解決方法はXinerama/Base Mosaic/SLI Mosaic
  • Base MosaicあるいはSLI Mosaicはidentical card(完全に同一のカード)でなければならない
  • Xineramaはnvidiaドライバーでサポート外とあるが、不安定ではあるものの動作する
  • 現在最新のnvidia-settingsだと、Base Mosaicが組めない環境ではBase Mosaicの選択肢は出ない
  • 画面数を増やしたいだけであればカードを増やすのは有効。処理性能は増えない
  • SLIする場合はSLIケーブル/ブリッジでカードを接続する必要がある
  • SLIであれMultiGPUであれ、複数カードによるアクセラレーションはidentical cardsである必要がある
  • ffmpegはプライマリであれセカンダリであれ、設定なしに性能の高いGTX750Tiをエンコードに使用した
  • OpenGLやエンコーディング性能でも、Quadro2000よりもGeForce GTX750Tiのほうがはるかに速い

</ins>