我有一台 MSI GT60 笔记本电脑,配备了启用了 Optimus 的 GTX 670M GPU,我一直在尝试在 Ubuntu 12.04 环境中运行 CUDA。我意识到 Linux 不支持 Optimus,但我读过以下帖子,其中提到 CUDA 适用于混合 GPU。
如何让 nVidia CUDA 或 OpenCL 在装有 nVidia 独立卡/Intel 集成显卡的笔记本电脑上运行?
我通过以下方式安装了 NVIDIA 驱动程序
sudo add-apt-repository ppa:ubuntu-x-swat/x-updates
sudo apt-get update
sudo apt-get install nvidia-current
最终的驱动程序版本是 302.17,据说从 295.59 开始支持 GTX 670M。我还从 NVIDIA 网站下载了 CUDA 4.2,并根据 nvidia-current 库对其进行了编译。
不幸的是,当我在 CUDA SDK 中运行 deviceQuery 时,我得到了以下输出
cudaGetDeviceCount returned 38
-> no CUDA-capable device is detected
检查 /proc/driver/nvidia/gpus/0/information 得到以下内容
Model: GeForce GTX 670M
IRQ: 16
GPU UUID: GPU-????????-????-????-????-????????????
Video BIOS: ??.??.??.??.??
Bus Type: PCI-E
DMA Size: 32 bits
DMA Mask: 0xffffffffff
Bus Location: 0000:01.00.0
以下是“lspci | grep VGA”的输出
00:02.0 VGA compatible controller: Intel Corporation Ivy Bridge Graphics Controller (rev 09)
01:00.0 VGA compatible controller: NVIDIA Corporation Device 1213 (rev ff)
那么...我做错了什么?
谢谢!
答案1
好的,我遇到了同样的问题。以下方法对我有用:
安装 NVIDIA 开发人员驱动程序 (295.41),但不覆盖 opengl 文件:
sudo stop lightdm sudo ./devdriver_4.2_linx_64_295.41.run --no-opengl-files
这一点很重要不是勾选更改
xorg.conf
文件的选项按照惯例安装 CUDA 工具包(对我来说是 4.2,因为我需要 OpenCL)和代码示例
如果你
deviceQuery
以超级用户身份运行它应该可以工作:sudo ./deviceQuery
所有这些都写在设备驱动程序的文档文件中/usr/share/doc/NVIDIA_GLX-1.0/
(第 19 章)。
答案2
我遇到了和你一模一样的问题,虽然我不知道这个方法是否对你有用,但有一个解决方案。你可以安装 Bumblebee 或 Ironhide 驱动程序来启用 Linux 的 Optimus。Optimus 使用你的笔记本电脑在 2 个显卡之间切换,从而提高电池的性能。