如何使用nVidia分立卡/英特尔集成显卡在笔记本电脑上运行nVidia CUDA或OpenCL?
背景:我是一名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吗?
我刚做了一些实验,可以确认Eric Appleman的声明,大黄蜂不是CUDA所必需的。 (更多关于Bumblebee : Ubuntu支持Optimus技术的NVIDIA GeForce吗? )
但是,当您需要使用OpenGL显示图形示例时,您确实需要像Bumblebee for Optimus系统这样的东西,否则您在显示器上看不到任何内容或得到错误:
ERROR: Support for necessary OpenGL extensions missing.
运行CUDA程序时,需要安装CUDA工具包和nvidia驱动程序。 如果您打算编译程序,还需要SDK。 安装程序可以在http://developer.nvidia.com/cuda-downloads上找到,请在关闭Optimus笔记本电脑之前阅读以下说明。
安装CUDA
司机
我建议从Ubuntu的软件包管理器安装nvidia驱动程序。 如果您安装Bumblebee,则无需担心驱动程序。 否则,安装后,请按照https://askubuntu.com/a/107746/6969中的说明 禁用 nvidia库。 如果你不这样做,你将失去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
。
SDK
如果您希望能够编译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行之后,用
${OPENGLLIB}
交换${RENDERCHECKGLLIB}
,使其看起来像: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 someComputallyIntensiveProgram
如果您尚未将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
这是完整的答案(基于Alex Falappa和Lekensteyn的答案):
确实可以让nVidia Optimus GPU在Ubuntu上运行CUDA。
CUDA不需要大黄蜂。 (更多关于Bumblebee : Ubuntu支持Optimus技术的NVIDIA GeForce吗? )
但是,当您需要使用OpenGL显示图形示例时,您确实需要像Bumblebee for Optimus系统这样的东西,否则您在显示器上看不到任何内容或得到错误:
ERROR: Support for necessary OpenGL extensions missing.
如果你需要使用像Blender这样的图形密集型程序,Bumblebee目前是一个很好的方法。
如果您不想安装Bumblebee(即如果您不需要OpenGL),请跳至安装CUDA 。
否则,请继续阅读。
安装大黄蜂
按照Nvidia Optimus笔记本电脑的工作原理进行操作?
这些目前由Bumblebee开发人员保持最新。
一旦安装了Bumblebee并重新启动,您就可以选择使用optirun
程序启动程序时使用的图形卡。
例如:
optirun blender
要快速测试一切是否正常,请使用:
optirun glxspheres
如果一切正常,你会看到一个带有彩色旋转球体的程序。
validation终端中的GL供应商字符串是否包含单词nvidia 。
如果只运行glxspheres
,您会看到供应商字符串包含Intel卡。
运行CUDA程序时,需要安装CUDA工具包和nvidia驱动程序。 如果您打算编译程序,还需要SDK。 安装程序可以在http://developer.nvidia.com/cuda-downloads上找到,请在关闭Optimus笔记本电脑之前阅读以下说明。
安装CUDA
司机
我建议从Ubuntu的软件包管理器安装nvidia驱动程序。 如果您安装Bumblebee,则无需担心驱动程序。 否则,安装后,请按照https://askubuntu.com/a/107746/6969中的说明 禁用 nvidia库。 如果不这样做,您将失去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
。
SDK
如果您希望能够编译CUDA应用程序,可以使用与上述类似的方式安装SDK。 下载,使其可执行并运行它(不是root用户,例如没有sudo
!)。
使用CUDA
CUDA不需要使用nvidia驱动的X服务器。 在这种情况下,您可以运行随机测试程序,如:
LD_LIBRARY_PATH = / usr / lib / nvidia-current:/ usr / lib32 / nvidia-current:$ LD_LIBRARY_PATH someComputallyIntensiveProgram
如果您尚未将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渲染function,您可能需要使用预编译的CUDA内核进行Blender构建。 Blender.org的构建都有预编译的CUDA内核; ppa:cheleb / blender-svn build( 这个问题的更多信息 )没有。
要安装正式的Blender版本,只需按照本答案中的说明操作即可。
如果你已经将Blender安装到/usr/lib/blender
,那么你应该可以从终端运行Blender并使用GPU渲染:
optirun '/usr/lib/blender/blender'
Linux下的混合图形(通常是Intel集成显卡和Nvidia独立显卡)支持目前有点麻烦。 有些东西在X服务器领域慢慢移动但是没有屏住呼吸。
正如您所猜测的那样,大黄蜂目前是一个很好的方式。
我最近买了一台带有Intel / Nvidia显卡的华硕N55笔记本电脑,我能够让Blender Cycles渲染器使用CUDA。
当我安装Ubuntu 12.04时,它默认使用集成显卡通过intel图形驱动程序。 不应安装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
并validationGL供应商字符串是否包含单词Nvidia。 如果你改为:
glxspheres
供应商字符串应包含Intel字
我发现要运行CUDA的所有示例,使用Bumblebee,你必须从这里安装驱动程序295.40并在安装过程中选择不覆盖 config x11
。
然后,您必须使用相同的驱动程序来编译示例并运行该程序。