Ubuntuでnvidiaのxorg.conf関連を触ってみた


TLDR;

Ubuntuでnvidiaのグラボを弄る時にxorg.confが無くて困っていたけれど、
/usr/share/X11/xorg.conf.d/11-nvidia-prime.conf
をいじってなんとかなった。(本当は弄っちゃダメ!)

画面の表示が出来ないとき💻

nVidiaのGPUが搭載されているゲーミングノートがX11を表示できなかった時は
/usr/share/X11/xorg.conf.d/11-nvidia-prime.conf
の"OutputClass"に下記を追記して表示してもらった。

/usr/share/X11/xorg.conf.d/11-nvidia-prime.conf
Option "PrimaryGPU" "No"

GPUをパフォーマンスモードにしても本気出してくれないとき🐢🐇

nVidiaのGPUが本気を出してくれなかった時は
/usr/share/X11/xorg.conf.d/11-nvidia-prime.conf
の"OutputClass"に下記を追記して本気を出させた。

/usr/share/X11/xorg.conf.d/11-nvidia-prime.conf
Option "RegistryDwords" "PowerMizerEnable=0x1; PerfLevelSrc=0x2222; PowerMizerDefaultAC=0x1"

または

/usr/share/X11/xorg.conf.d/11-nvidia-prime.conf
Option "RegistryDwords" "PowerMizerEnable=0x1; PerfLevelSrc=0x3322; PowerMizerDefaultAC=0x1"

ただし、このファイルは人間が弄ってはいけないものらしい。

画面が表示されなくなった

僕は普段から研究目的にゲーミングノート(Dell G3 3579)というエントリー機1でCUDAをブン回しています。
GTX 1050TiというGPUが載っている機種で、まぁ、ショボいゲームなら動きます。(skyrimは動きません)

ある日、なんにもしてないのに画面が表示されなくなった(何かしている)ことがあります。
正直、こういう時のGPU搭載ノートってLinuxの場合クソダルいです。ゲームも出来ないし気分悪いです。
GPU関連再インストールって重いです。そこで、設定でどうにかならないか見てみました。
どうも、GPUの画面の優先度の問題らしいなぁとなんとなく思っていました。
だけど、新しいubuntuには/etc/X11/xorg.confがなくて泣いていました。
んで、なにかいいものないかなって探してみると、下記の様なファイルを読みにいっている様でした。
/usr/share/X11/xorg.conf.d/11-nvidia-prime.conf
どうも、xorg.confに酷似しているので、nvidiaのGPUの優先度を下げるべく書き換えました。
すると、何故か動くようになりました。

GPUが本気を出してくれない!🐢🐇

上記設定でなんとか画面は映ったものの、問題がありました。
GPUが本気を出してくれなかったのです。
CUDAはpythonのcupyで使っていますが、ショボい学生とは言え一応自称パソヲタですので
非同期・低水準のメモリ管理とかはしていて、それなりの性能を出してくれています。
もちろん、GPGPUブン回す時はnvidia-settingsを起動して、
Powermizer settingsをPrefer maximum performanceにしています。
基本ですね。
が、Prefer maximum performanceにしているのに、GPUのクロック周波数が350MHzとかになって泣いていました。
これも結局/usr/share/X11/xorg.conf.d/11-nvidia-prime.confを弄ることで上手く行きました。

上手くいかなかった設定😢

以下の設定をやればいいって色んな所に書いてあった。

/etc/X11/xorg.conf
Option "RegistryDwords" "PowerMizerEnable=0x1; PerfLevelSrc=0x2222; PowerMizerDefaultAC=0x1"

これはノートPCとかなら一寸違って下記のようにするらしいです。詳しくはないです。

/etc/X11/xorg.conf
Option "RegistryDwords" "PowerMizerEnable=0x1; PerfLevelSrc=0x3322; PowerMizerDefaultAC=0x1"

まぁ、実際は前後にもっと色々と設定がくっついていましたが、詳しくはググって下さい。
これやると、僕の環境では画面が表示されなくなりました。
X11なしで画像やPDFが表示できるならば別にX11は無くても仕事は出来るんですが、
そのへん詳しくないし、そもそも設定がおかしいのは明らかなのでした。
ちなみに、gpu-managerを回すと動かない設定に戻りました。

...何かいい方法ないんですか?知っていたら教えて下さい。

上手くいった設定の問題点⚙

/usr/share/X11/xorg.conf.d/11-nvidia-prime.conf
を弄る事自体が罪。以上です。
このファイルには「このファイル弄るな。gpu-managerが作るものだから!」って冒頭に書いてあるんですが、
いや、どう考えてもgpu-managerさんが吐いた設定ファイル、自分の思い通りに動いてくれないんですもん…。

Ubuntu搭載ノートPCでGPGPU💻

ゲーミングノートにUbuntuを入れること自体が若干変態的なことではあります。
そもそも画面が表示されないとかあってツラミが出てくることも無くはないです。
それでも手軽な実験環境としてまずまず快適であり、
1050Tiみたいな弱っちい子でもマルチコアCPUに比べると圧倒的に速いです。

こういうの弄るのが苦じゃなくて、かつ出張先2でGPGPUしたいとか、
奥さんがデスクトップ機が禁止されてるとか、宗教上の理由を持っているとかなら、候補に上がるかと思います。


  1. 自腹。早く大学院卒業して研究費でもっと良いゲーミングPCやラズパイ買いたい…。 

  2. 僕はノートPCでGPGPU出来ないと研究がはかどらない。そんな人、他にも居ると思う。