好的,我通过一些广泛的研究和测试回答了我的问题。如果您有一个多gpu、多监视器系统,您需要一个统一的桌面(这意味着windows可以捕捉到监视器,并且可以跨监视器拖动程序窗口,而不管哪个监视器位于哪个gpu上)。那么简单的答案就是针对Nvidia图形卡的SLI/base Mosaic。
然而,除非你花60多个小时阅读文档并与他人交谈(我就是这么做的),否则会丢失多个信息点。
我将给出多个链接和澄清点,这些链接和澄清点应该有助于解决其他人的沮丧和努力。了解所有命令和建议都是从Ubuntu 16.04、Unity DE、Nvidia Geforce驱动程序v380+的角度出发的,可能不适用于其他系统和硬件。
Nvidia-->X服务器(&S);兰德尔
以下几点之间存在[错误]通信:
-
兰德尔
(本机安装的display manager,在CLI中也称为xrandr)
-
X服务器
(输入和输出之间的主要管理/连接系统,包括Xorg、Xorg.conf方面)
-
Nvidia设置
(Nvidia的显示管理器,用于向X server和RandR发送信息)
使用时
nvidia-settings
,Nvidia将配置并向x server和RandR发送错误信息,然后内部处理逻辑本身。
-
Nvidia有自己的xinerama,与X服务器xinerama不同。如果在xorg中启用xinerama。conf文件,这是X服务器自己的Xinerma文件,而不是Nvidia文件(因此,如果您试图通过
nvidia设置
。
-
Nvidia将把所有监视器放在一个屏幕下,并将此屏幕作为一个统一的桌面呈现给X server,同时使用其内部xinerama逻辑允许RandR正确查看单独的监视器。
-
这意味着在xorg中制作单独的屏幕、监视器和设备部分。conf正在中断
nvidia设置
管理桌面的自然方式(即禁用Nvidia的内部xinerama)。这将需要在xorg中启用X服务器的xinerama。结果是conf文件(然而,这往往会打破我在开头提到的统一桌面的期望之一)。
-
即使在处理多个GPU渲染桌面时,它仍然以1个屏幕的形式显示给X服务器,同时使用其内部逻辑向RandR报告所有可用的监视器。这将需要一个名为base/SLI Mosaic的选项,但我也需要在下面澄清这一点。
Nvidia结束-->随机(&R);X服务器说明
Nvidia-->xorg。形态
Nvidia如何使用xorg。conf文件不反映您在中了解到的内容
X server
,则,
X org
和
xorg.conf
文档相反,你需要专注于阅读
Nvidia
文档然而,当你转到文档时,请注意URL。
“/自述/”之前的数字必须是您的Nvidia驱动程序版本号,即下面示例URL中的“390.42”。很多谷歌对nvidia设置文档的点击对老司机来说都是老文档。如果您得到旧文档,这将使您陷入一个循环。
示例:
http://us.download.nvidia.com/XFree86/Linux-x86_64/390.42/README/index.html
-
如前所述,Nvidia只向X服务器报告一个屏幕。在这里,我将向您展示
Section "Screen"
xorg的。conf文件进行澄清。
Section "Screen"
Identifier "Screen0"
Device "Device0"
Monitor "Monitor0"
DefaultDepth 24
Option "Stereo" "0"
Option "nvidiaXineramaInfoOrder" "DFP-0"
Option "metamodes" "GPU-0.DFP-0: nvidia-auto-select +0+0,
GPU-0.DFP-4: nvidia-auto-select +1680+0,
GPU-1.DFP-0: nvidia-auto-select +3360+0,
GPU-1.DFP-4: nvidia-auto-select +5040+0,
Option "MultiGPU" "Off"
Option "SLI" "on"
Option "BaseMosaic" "on"
SubSection "Display"
Depth 24
EndSubSection
EndSection
-
正如您所看到的,它仍然只有一个屏幕
metamode
可以是特定的
要使用的gpu和端口。
-
另一点是
MultiGPU
不是指主板上图形卡的数量。
-
英伟达自动选择为您提供地平线同步、垂直刷新范围和显示器分辨率,但从显示器放置的尾随数字可以看出,我希望它将我的系统分辨率设置为1680x1050。
不那么模棱两可的
Section Screen
是:
Section "Screen"
Identifier "Screen0"
Device "Device0"
Monitor "Monitor0"
DefaultDepth 24
Option "Stereo" "0"
Option "nvidiaXineramaInfoOrder" "DFP-0"
Option "metamodes" "GPU-a0bd4a65-1c2b-f765-eeb2-db96b3f4b25a.GPU-0.DVI-I-1: nvidia-auto-select +0+0,
GPU-a0bd4a65-1c2b-f765-eeb2-db96b3f4b25a.GPU-0.DVI-D-0: nvidia-auto-select +1680+0,
GPU-a85ce4bc-1e9b-6275-2aee-0d1ed8bd7ce2.GPU-1.DVI-I-1: nvidia-auto-select +3360+0,
GPU-a85ce4bc-1e9b-6275-2aee-0d1ed8bd7ce2.GPU-1.DVI-D-0: nvidia-auto-select +5040+0"
Option "MultiGPU" "Off"
Option "SLI" "on"
Option "BaseMosaic" "on"
SubSection "Display"
Depth 24
EndSubSection
EndSection
-
通过添加GPU哈希,您可以直接说出要使用哪些图形卡,而不是让系统来解释。
-
在我的系统上,DVI-D-0是==到DFP-4,因此系统没有任何解释,但是我认为使用端口类型而不是DFP位置可以消除用户的歧义。
Nvidia结束-->xorg。形态
SLI/Base Mosiac锁销22
因此,最终的答案是,当使用
nvidia设置
对于统一桌面,我想要。然而,它只会
允许三个屏幕
跨2个或多个GPU启用
非Quadro或NVS
选定的GPU系列。这并不是因为我珍贵的Geforce GTX 970的技术无法处理它,而是因为Nvidia在
nvidia设置
用于升级其较新GPU的代码。我可以从这两个
Nvidia forum
,并从
source
测试存储库中的代码。
事实上,最初您可以在2个未选择的GPU上有3个以上的屏幕,直到296驱动程序强制更改为止。
如果您在没有正确GPU的情况下进行任何尝试,将导致所有屏幕同时显示在RandR GUI和Nvidia设置GUI中。但是,您会注意到,除三个监视器外,其他所有监视器都将被禁用,并且只有在禁用已启用的三个监视器中的一个时,才能启用这些监视器。
有用的命令
xrandr --version
xrandr --listproviders
sudo Xorg -version
sudo lspci -vvv |grep -i -A 20 nvidia
nvidia-smi
nvidia-xconfig --query-gpu-info
nvidia-settings
cat /var/log/Xorg.0.log
nvidia-xconfig -t
全功能xorg。形态
Section "ServerLayout"
Identifier "Layout0"
Screen 0 "Screen0" 0 0
InputDevice "Keyboard0" "CoreKeyboard"
InputDevice "Mouse0" "CorePointer"
Option "Xinerama" "0"
EndSection
Section "InputDevice"
Identifier "Mouse0"
Driver "mouse"
Option "Protocol" "auto"
Option "Device" "/dev/psaux"
Option "Emulate3Buttons" "no"
Option "ZAxisMapping" "4 5"
EndSection
Section "InputDevice"
Identifier "Keyboard0"
Driver "kbd"
EndSection
Section "Monitor"
Identifier "Monitor0"
VendorName "Dell, Inc."
ModelName "DELL E207WFP"
HorizSync 30.0 - 83.0
VertRefresh 56.0 - 75.0
Option "DPMS"
EndSection
Section "Device"
Identifier "Device0"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BoardName "Geforce GTX 970"
BusID "PCI:1:0:0"
EndSection
Section "Screen"
Identifier "Screen0"
Device "Device0"
Monitor "Monitor0"
DefaultDepth 24
Option "Stereo" "0"
Option "nvidiaXineramaInfoOrder" "DFP-0"
Option "metamodes" "GPU-a0bd4a65-1c2b-f765-eeb2-db96b3f4b25a.GPU-0.DVI-I-1: nvidia-auto-select +0+0,
GPU-a0bd4a65-1c2b-f765-eeb2-db96b3f4b25a.GPU-0.DVI-D-0: nvidia-auto-select +1680+0,
GPU-a85ce4bc-1e9b-6275-2aee-0d1ed8bd7ce2.GPU-1.DVI-I-1: nvidia-auto-select +3360+0,
GPU-a85ce4bc-1e9b-6275-2aee-0d1ed8bd7ce2.GPU-1.DVI-D-0: nvidia-auto-select +5040+0"
#GPU-a0bd4a65-1c2b-f765-eeb2-db96b3f4b25a.GPU-0.DP-1: nvidia-auto-select +1680+1050,
#GPU-a0bd4a65-1c2b-f765-eeb2-db96b3f4b25a.GPU-0.HDMI-0: nvidia-auto-select +0+1050,
#GPU-a85ce4bc-1e9b-6275-2aee-0d1ed8bd7ce2.GPU-1.HDMI-0: nvidia-auto-select +3360+1050,
#GPU-a85ce4bc-1e9b-6275-2aee-0d1ed8bd7ce2.GPU-1.DP-1: nvidia-auto-select +5040+1050"
Option "MultiGPU" "Off"
Option "SLI" "on"
Option "BaseMosaic" "on"
SubSection "Display"
Depth 24
EndSubSection
EndSection