我知道这是一个复杂的话题,但我想让我的电脑能够在 GPU 之间切换。这是一台东芝卫星电脑,配有(最初)Optimus 系统。它有一个 Intel core i7 CPU 和一个 NVIDIA GT 740M GPU。根据我找到的一些教程,我的步骤如下:
- 转到“附加驱动程序”并检查我是否正在使用 NVIDIA 专有驱动程序。我使用的是 375.39 版。
之后我安装了 nvidia-prime 和 nvidia-375 驱动程序:
sudo apt-get install nvidia-375 nvidia-prime
- 重启
- 在 NVIDIA X SERVER SETTINGS 中的 Prime Profiles 中选择 NVIDIA。
- 退出并登录。
一切都很顺利。没有错误消息或任何奇怪的事情。之后我去看电影,发现有些闪烁。所以我运行
lspci -vnnn | perl -lne 'print if /^\d+\:.+(\[\S+\:\S+\])/' | grep VGA
显示我正在使用哪个 GPU:
00:02.0 VGA compatible controller [0300]: Intel Corporation 4th Gen Core Processor Integrated Graphics Controller [8086:0416] (rev 06) (prog-if 00 [VGA controller])
我不明白,因为 NVIDIA X SERVER SETTINGS 似乎都正确告诉我我正在使用 NVIDIA GPU。但我肯定不是,因为屏幕在播放非高清电影时闪烁。有人能帮忙吗?
注意:我尝试过使用第二台显示器和不使用第二台显示器。结果都一样。nvidia 应用程序似乎无法识别第二台显示器,而是告诉我它使用的是一台具有所有分辨率总和的显示器。不知道这是否相关。
答案1
我有两台配备 Optimus 的 ThinkPad。在这两种情况下,它们的 BIOS 设置都禁用了 Optimus,只向计算机显示 Nvidia 卡:在这种情况下,英特尔视频会消失。但是,可以说,这是从图片中删除英特尔视频的唯一方法,这不是 Optimus 模式。在 Optimus 模式或混合模式下,笔记本电脑的显示面板由英特尔硬件运行,而 HDMI 或显示端口设备由 Nvidia 运行。如果您选择英特尔配置文件,则 nvidia 卡会关闭,但您会失去外部屏幕。当 Nvidia 配置文件打开时,Nvidia 卡会进行所有渲染,但它会将渲染的帧发送到英特尔视频,而英特尔硬件会将其显示在笔记本电脑的面板上。我读到有些笔记本电脑没有启用“独立”视频的方法;这增加了笔记本电脑的成本。
直到 X 版本 1.19,Nvidia 驱动程序根本无法将这些传输定时到 Intel 以避免撕裂(您看到的闪烁)。这个问题现在已经修复,但您需要 Ubuntu 17.04 或其他相当新的版本才能利用它。这是 xserver 软件的问题,Nvidia 的补丁终于被接受了。
因此,在 Optimus 模式 Nvidia 配置文件中,两张卡都会使用。这听起来有点奇怪,但这是笔记本电脑在两张卡之间动态切换工作负载的唯一方法。在 Windows 中,这是有道理的,因为当 Nvidia 驱动程序足够好时,它会将渲染发送到 Intel 卡。Linux 中的 Bumblebee 软件会这样做,但 Prime 不会。在 Prime 下,Nvidia 始终处于开启状态,处于 Nvidia 配置文件中,并完成所有工作。英特尔驱动程序被降级为只是愚蠢地重新广播到笔记本电脑的面板。它不节省电量。唯一的好处是切换到英特尔配置文件比访问 BIOS 设置稍微方便一些,因为您可以通过重新启动而无需进入 BIOS 来进行切换。
老实说,如果我使用外接显示器,我通常会使用 BIOS 设置来选择独立显卡(100% Nvidia),因为这样就不会出现撕裂现象(我使用的是 xubuntu 16.04.2,而 nvidia/intel Optimus 撕裂问题要到 7 月的 16.04.3 才会修复)。为了在 Nvidia 中消除撕裂现象,我启用了 Nvidia 驱动程序选项 Force Composition Pipeline,但这对您来说可能不是必需的。