如何使用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

然后,您必须使用相同的驱动程序来编译示例并运行该程序。