背景:我是一名 3D 艺术家(业余爱好),最近开始使用 Ubuntu 12.04 LTS 与 Windows 7 双启动。它运行在我一台相当新的 64 位东芝笔记本电脑上,配有 nVidia GeForce GT 540M GPU(显卡)。但它也配有英特尔集成显卡(我怀疑 Ubuntu 一直在使用它)。
因此,当我在 Windows 上将 3D 场景渲染为图像时,我可以选择使用 CPU 或 nVidia GPU(速度更快)。从 3D 应用程序中,我可以将 GPU 设置为使用 CUDA 或 OpenCL。在 Ubuntu 中,没有 GPU 选项。
在对 Linux 和 nVidia Optimus 技术的问题进行了(太多?)研究之后,我稍微开悟了一点,但也更加困惑了。
我根本不关心 Optimus 技术,因为电池寿命对我来说根本不是问题。
我的问题是:我该怎么做才能在 Ubuntu 中的 nVidia GPU 上使用利用 CUDA 的程序(例如 Blender)?我需要 nVidia 驱动程序吗?(我听说它们与 Linux 上的 Optimus 设置配合得不好。)有没有办法在 Ubuntu 中的 GPU 上使用 OpenCL?
答案1
我刚刚做了一些实验,可以证实 Eric Appleman 的说法,即 Bumblebee 对于 CUDA 来说不是必需的。(有关熊蜂:Ubuntu 是否支持具有 Optimus 技术的 NVIDIA GeForce?)
然而,当你需要使用 OpenGL 显示图形示例时,你做需要像 Bumblebee 这样的适用于 Optimus 系统的东西,否则您将无法在显示屏上看到任何内容,或者会收到错误:
ERROR: Support for necessary OpenGL extensions missing.
运行 CUDA 程序时,需要安装 CUDA 工具包和 nvidia 驱动程序。如果您打算编译程序,还需要 SDK。安装程序可在以下位置找到http://developer.nvidia.com/cuda-downloads,在损坏您的 Optimus 笔记本电脑之前,请阅读以下说明。
安装 CUDA
司机
我建议从 Ubuntu 的包管理器安装 nvidia 驱动程序。如果你安装了 Bumblebee,则无需担心驱动程序。否则,安装后,禁用NVIDIA 库如下所述https://askubuntu.com/a/107746/6969如果不这样做,您将失去 3D 加速,并且可能陷入低分辨率。
工具包
基本上,您必须下载安装程序,使其可执行并运行它。 - 下载安装程序。截至撰写本文时,4.2.9 是最新的驱动程序。由于我使用的是 64 位操作系统,因此我使用 64 位 11.04 Ubuntu 软件包(尽管我运行的是 12.04) - 使其可执行并允许安装/usr/local/cuda
:
chmod +x cudatoolkit_4.2.9_linux_64_ubuntu11.04.run
sudo ./cudatoolkit_4.2.9_linux_64_ubuntu11.04.run
当出现安装消息询问您在哪里安装 CUDA 时,只需按 Enter 接受默认值/usr/local/cuda
:
......................................
Enter install path (default /usr/local/cuda, '/cuda' will be appended):
安装后,它会打印一些消息,建议将 cuda 库目录放入你的库搜索路径:
========================================
* Please make sure your PATH includes /tmp/cuda/cuda/bin
* Please make sure your LD_LIBRARY_PATH
* for 32-bit Linux distributions includes /tmp/cuda/cuda/lib
* for 64-bit Linux distributions includes /tmp/cuda/cuda/lib64:/tmp/cuda/cuda/lib
* OR
* for 32-bit Linux distributions add /tmp/cuda/cuda/lib
* for 64-bit Linux distributions add /tmp/cuda/cuda/lib64 and /tmp/cuda/cuda/lib
* to /etc/ld.so.conf and run ldconfig as root
* Please read the release notes in /tmp/cuda/cuda/doc/
* To uninstall CUDA, remove the CUDA files in /tmp/cuda/cuda
* Installation Complete
LD_LIBRARY_PATH=/usr/local/cuda/lib64:/usr/local/cuda/lib:$LD_LIBRARY_PATH
如果您愿意,可以跳过此步骤,但稍后运行程序时必须进行设置。
软件开发工具包
如果您希望能够编译 CUDA 应用程序,您可以按照与上述类似的方式安装 SDK。下载、使其可执行并运行它(不是以 root 身份运行,例如没有sudo
!)。在编译它的部分内容时,我必须进行一些更改NVIDIA_GPU_Computing_SDK/C/common/common.mk
:
在第 189 行之后
OPENGLLIB := -lGL -lGLU -lX11 -lXi -lXmu
添加:OPENGLLIB += -L/usr/lib/nvidia-current -L/usr/lib32/nvidia-current
大约在第 271 行之后,将其交换
${RENDERCHECKGLLIB}
为${OPENGLLIB}
如下形式:LIB += $(RENDERCHECKGLLIB) ${OPENGLLIB} $(PARAMGLLIB) ${LIB} -ldl -rdynamic
- 再往前几 (5) 行,执行相同操作,但
-lcuda
也删除。 - 再往前几 (7) 行,执行与第 271 行相同的操作。
使用 CUDA
CUDA 不需要 nvidia 驱动的 X 服务器即可工作。在这种情况下,您可以像这样运行随机测试程序:
LD_LIBRARY_PATH=/usr/lib/nvidia-current:/usr/lib32/nvidia-current:$LD_LIBRARY_PATH 一些ComputallyIntensiveProgram
如果您尚未将 CUDA 添加到库路径,则您将需要:
LD_LIBRARY_PATH = / usr / lib / nvidia-current:在/ usr / lib32 / nvidia-current:在/ usr / local / cuda / lib64:在/ usr / local / cuda / lib:$ LD_LIBRARY_PATH someComputallyIntensiveProgram
(如果您的程序是 64 位,则可以从中删除 32 位路径)。
如果 CUDA 程序确实需要使用 OpenGL 显示某些内容,则必须使用 optirun:
optirun blender
或者,如果您没有将 CUDA 添加到默认路径:
LD_LIBRARY_PATH=/usr/local/cuda/lib64:/usr/local/cuda/lib:$LD_LIBRARY_PATH optirun blender
答案2
以下是完整的答案(基于亚历克斯·法拉帕和Lekensteyn 的答案):
确实可以让 nVidia Optimus GPU 在 Ubuntu 上运行 CUDA。
Bumblebee 对于 CUDA 来说不是必需的。(有关熊蜂:Ubuntu 是否支持具有 Optimus 技术的 NVIDIA GeForce?)
然而,当你需要使用 OpenGL 显示图形示例时,你做需要像 Bumblebee 这样的适用于 Optimus 系统的东西,否则您将无法在显示屏上看到任何内容,或者会收到错误:
ERROR: Support for necessary OpenGL extensions missing.
如果您需要使用 Blender 等图形密集型程序,Bumblebee 目前是一个不错的选择。
跳至安装 CUDA如果您不想安装 Bumblebee(即如果您不需要 OpenGL)。
否则,请继续阅读。
安装 Bumblebee
按照以下说明操作配备 Nvidia Optimus 的笔记本电脑运行效果如何?
这些目前由 Bumblebee 开发人员进行更新。
安装 Bumblebee 并重新启动后,您将能够使用该程序选择启动程序时要使用的显卡optirun
。
例如:
optirun blender
要快速测试一切是否正常,请使用:
optirun glxspheres
如果一切正常,您将看到一个带有彩色旋转球体的程序。
验证终端中的 GL 供应商字符串是否包含单词英伟达。
如果您只运行glxspheres
,您会看到供应商字符串包含英特尔卡。
运行 CUDA 程序时,需要安装 CUDA 工具包和 nvidia 驱动程序。如果您打算编译程序,还需要 SDK。安装程序可在以下位置找到http://developer.nvidia.com/cuda-downloads,在损坏您的 Optimus 笔记本电脑之前,请阅读以下说明。
安装 CUDA
司机
我建议从 Ubuntu 的包管理器安装 nvidia 驱动程序。如果你安装了 Bumblebee,则无需担心驱动程序。否则,安装后,禁用NVIDIA 库如下所述https://askubuntu.com/a/107746/6969如果不这样做,您将失去 3D 加速,并且可能陷入低分辨率。
工具包
基本上,您必须下载安装程序,使其可执行并运行它。 - 下载安装程序。截至 2013 年 1 月 9 日,5.0.35 是最新的驱动程序。由于我使用的是 64 位操作系统,因此我使用 64 位 11.10 Ubuntu 软件包(尽管我运行的是 12.10) - 使其可执行并允许安装/usr/local/cuda
:
chmod +x cudatoolkit_5.0.35_linux_64_ubuntu11.10-1.run
sudo ./cudatoolkit_5.0.35_linux_64_ubuntu11.10-1.run
当出现安装消息询问您在哪里安装 CUDA 时,只需按 Enter 接受默认值/usr/local/cuda
:
......................................
Enter install path (default /usr/local/cuda, '/cuda' will be appended):
安装后,它会打印一些消息,建议将 cuda 库目录放入你的库搜索路径:
========================================
* Please make sure your PATH includes /tmp/cuda/cuda/bin
* Please make sure your LD_LIBRARY_PATH
* for 32-bit Linux distributions includes /tmp/cuda/cuda/lib
* for 64-bit Linux distributions includes /tmp/cuda/cuda/lib64:/tmp/cuda/cuda/lib
* OR
* for 32-bit Linux distributions add /tmp/cuda/cuda/lib
* for 64-bit Linux distributions add /tmp/cuda/cuda/lib64 and /tmp/cuda/cuda/lib
* to /etc/ld.so.conf and run ldconfig as root
* Please read the release notes in /tmp/cuda/cuda/doc/
* To uninstall CUDA, remove the CUDA files in /tmp/cuda/cuda
* Installation Complete
LD_LIBRARY_PATH=/usr/local/cuda/lib64:/usr/local/cuda/lib:$LD_LIBRARY_PATH
如果您愿意,可以跳过此步骤,但稍后运行程序时必须进行设置。
软件开发工具包
如果您希望能够编译 CUDA 应用程序,您可以按照与上述类似的方式安装 SDK。下载、使其可执行并运行它(不是以 root 身份运行,例如没有sudo
!)。
使用 CUDA
CUDA 不需要 nvidia 驱动的 X 服务器即可工作。在这种情况下,您可以像这样运行随机测试程序:
LD_LIBRARY_PATH=/usr/lib/nvidia-current:/usr/lib32/nvidia-current:$LD_LIBRARY_PATH 一些ComputallyIntensiveProgram
如果您尚未将 CUDA 添加到库路径,则您将需要:
LD_LIBRARY_PATH = / usr / lib / nvidia-current:在/ usr / lib32 / nvidia-current:在/ usr / local / cuda / lib64:在/ usr / local / cuda / lib:$ LD_LIBRARY_PATH someComputallyIntensiveProgram
(如果您的程序是 64 位,则可以从中删除 32 位路径)。
如果 CUDA 程序确实需要使用 OpenGL 显示某些内容,则必须使用 optirun:
optirun blender
或者,如果您没有将 CUDA 添加到默认路径:
LD_LIBRARY_PATH=/usr/local/cuda/lib64:/usr/local/cuda/lib:$LD_LIBRARY_PATH optirun blender
安装 Blender Build
(使用预编译的 CUDA 内核)
当你运行时optirun blender
,你可能会收到来自 Blender 的消息,提示 CUDA 内核编译失败,并且在终端中出现类似以下内容的消息:
Compiling CUDA kernel ...
nvcc warning : Option '--opencc-options (-Xopencc)' is obsolete and ignored, when
targeting compute_20, sm_20, or higher
gcc: error trying to exec 'cc1plus': execvp: No such file or directory
CUDA kernel compilation failed, see console for details.
如果您想使用 Blender 的 GPU 渲染功能,您可能需要使用预编译 CUDA 内核的 Blender 版本。Blender.org都具有预编译的 CUDA 内核;ppa:cheleb/blender-svn 构建(更多信息请访问此问题) 不要。
要安装官方的 Blender 版本,只需按照这个答案。
如果你已经安装了 Blender /usr/lib/blender
,那么你应该能够从终端运行 Blender 并使用 GPU 渲染:
optirun '/usr/lib/blender/blender'
答案3
Linux 下对混合显卡(通常是 Intel 集成显卡和 Nvidia 独立显卡)的支持目前有点麻烦。X 服务器领域正在慢慢取得进展,但不要太担心。
正如您所猜测的,大黄蜂目前是一个不错的选择。
我最近购买了一台配备英特尔/Nvidia 显卡的华硕 N55 笔记本电脑,我能够让 Blender Cycles 渲染器使用 CUDA。
当我安装 Ubuntu 12.04 时,它默认通过英特尔显卡驱动程序使用集成显卡。不应安装 noveau 显卡驱动程序。
然后我打开终端并执行:
sudo add-apt-repository ppa:bumblebee/stable
sudo apt-get update
sudo apt-get install bumblebee bumblebee-nvidia
之后我按照安装说明进行了操作():
sudo usermod -a -G bumblebee $USER
然后我重新启动了。
要选择启动程序时使用的驱动程序,请使用 optirun 程序,例如:
optirun blender
要测试所有工作是否正常,请使用:
optirun glxspheres
并验证 GL 供应商字符串是否包含单词 Nvidia。如果您运行:
glxspheres
供应商字符串应包含英特尔字词
答案4
我发现要使用 Bumblebee 运行 CUDA 的所有示例,您必须安装驱动程序 295.40这里并在安装过程中选择不覆盖这config x11
。
然后您必须使用相同的驱动程序来编译示例并运行程序。