如何在 Optimus 笔记本电脑 18.10 上安装 CUDA?

如何在 Optimus 笔记本电脑 18.10 上安装 CUDA?

我有一台配备 NVIDIA Quadro 1000M + 集成 Intel GPU 的 Thinkpad W520。我刚刚在其上全新安装了 Ubuntu 18.10。

我想要实现以下目标:

  • 正在运行的 CUDA,
  • 通过 DisplayPort/VGA 连接外部显示器,
  • 如果可能的话,处于 Optimus 模式(在 BIOS 中选择)。

安装任何内容之前的状态

我已nouveau默认设置。它通过 DisplayPort 和 VGA(笔记本电脑上的连接器)找到外接显示器,但它不能持续工作:外接显示器会在一段时间后关闭。

我做了什么

我尝试安装 CUDA 以及相应的 NVIDIA 驱动程序:

sudo apt install nvidia-cuda-toolkit
sudo ubuntu-drivers autoinstall

在编译内核模块的过程中发生了神秘崩溃,然后使用 重启后完成安装dkpg --configure -a。最后,它安装了 CUDA 9.1。

此时,笔记本电脑:

  • 以擎天柱模式启动,
  • 它没有检测到外部 VGA 显示器(需要测试 HDMI),
  • glxinfo说直接渲染是Yes
  • 但是图形不够流畅(当我移动窗口或刷新部分屏幕时,屏幕上会出现三角形的伪影),
  • 从原始9.1工具包安装程序中解压并编译了一些示例来验证CUDA后,结果发现CUDA也存在问题。

matrixMul不起作用,看看输出:

Error! Matrix[204798]=0.00000000, ref=3.19999981 error term is > 1.000000E-06
Error! Matrix[204799]=0.00000000, ref=3.19999981 error term is > 1.000000E-06
Result = FAIL

奇怪的是,deviceQuery确实有效,看看输出:

./deviceQuery Starting...

 CUDA Device Query (Runtime API) version (CUDART static linking)

Detected 1 CUDA Capable device(s)

Device 0: "Quadro 1000M"
  CUDA Driver Version / Runtime Version          9.1 / 9.1
  CUDA Capability Major/Minor version number:    2.1
  Total amount of global memory:                 1985 MBytes (2081751040 bytes)
MapSMtoCores for SM 2.1 is undefined.  Default to use 64 Cores/SM
MapSMtoCores for SM 2.1 is undefined.  Default to use 64 Cores/SM
  ( 2) Multiprocessors, ( 64) CUDA Cores/MP:     128 CUDA Cores
  GPU Max Clock rate:                            1400 MHz (1.40 GHz)
  Memory Clock rate:                             900 Mhz
  Memory Bus Width:                              128-bit
  L2 Cache Size:                                 131072 bytes
  Maximum Texture Dimension Size (x,y,z)         1D=(65536), 2D=(65536, 65535), 3D=(2048, 2048, 2048)
  Maximum Layered 1D Texture Size, (num) layers  1D=(16384), 2048 layers
  Maximum Layered 2D Texture Size, (num) layers  2D=(16384, 16384), 2048 layers
  Total amount of constant memory:               65536 bytes
  Total amount of shared memory per block:       49152 bytes
  Total number of registers available per block: 32768
  Warp size:                                     32
  Maximum number of threads per multiprocessor:  1536
  Maximum number of threads per block:           1024
  Max dimension size of a thread block (x,y,z): (1024, 1024, 64)
  Max dimension size of a grid size    (x,y,z): (65535, 65535, 65535)
  Maximum memory pitch:                          2147483647 bytes
  Texture alignment:                             512 bytes
  Concurrent copy and kernel execution:          Yes with 1 copy engine(s)
  Run time limit on kernels:                     Yes
  Integrated GPU sharing Host Memory:            No
  Support host page-locked memory mapping:       Yes
  Alignment requirement for Surfaces:            Yes
  Device has ECC support:                        Disabled
  Device supports Unified Addressing (UVA):      Yes
  Supports Cooperative Kernel Launch:            No
  Supports MultiDevice Co-op Kernel Launch:      No
  Device PCI Domain ID / Bus ID / location ID:   0 / 1 / 0
  Compute Mode:
     < Default (multiple host threads can use ::cudaSetDevice() with device simultaneously) >

deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 9.1, CUDA Runtime Version = 9.1, NumDevs = 1
Result = PASS

在较旧的 Ubuntu 版本上,在 BIOS 中选择仅 NVIDIA 模式启动解决了大部分问题(尽管由于缺少 Optimus,电池消耗得非常快)。但是,这次 Ubuntu 根本无法在此模式下启动。

答案1

据我所知,nvidia 不支持 ubuntu 18.10,因为它们的驱动程序不适用于新的 abi 24。您可能没有运行 nvidia 驱动程序。

尝试将以下两个存储库添加到您的 sources.list

deb http://us.archive.ubuntu.com/ubuntu/ bionic main
deb http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64 /

并降级 xserver-xorg-core 和 xserver-xorg-video-* 并安装 cuda(应该安装 cuda-10)

看看是否有帮助。

Cuda 通常是向后兼容的,因此虽然 1000m 在当时相对强大,但现在已经非常老旧了(如果我没记错的话是 8 年了),我不确定它还支持多少东西,但它应该还能运行。至于电池,除非你最近更换了电池,否则它可能已经过了使用寿命,所以我不会将电池视为指标。

相关内容