当前位置: 首页>>技术教程>>正文


如何在配备nVidia离散卡/英特尔集成显卡的笔记本电脑上使用nVidia CUDA或OpenCL?

, , ,

问题描述

背景:我是一名3D艺术家(出于业余爱好),最近开始在Windows 7上将Ubuntu 12.04 LTS用作dual-boot。它在运行于带有nVidia GeForce GT 540M GPU(图形卡)的相当新的64位东芝笔记本电脑上运行)。但是,它也有Intel Integrated Graphics(我怀疑Ubuntu一直在使用)。

因此,当我在Windows上将3D场景渲染为图像时,可以在使用CPU或nVidia GPU(更快)之间进行选择。在3D应用程序中,我可以将GPU设置为使用CUDA或OpenCL。在Ubuntu中,没有GPU选项。

在对Linux和nVidia Optimus技术的问题进行了(太多?)研究之后,我有所启迪,但更加困惑。

我一点都不在乎Optimus技术,因为电池寿命对我来说绝对不是问题。

这是我的问题:如何在Ubuntu的nVidia GPU上使用CUDA-utilizing程序(例如Blender)?我需要nVidia驱动程序吗? (我听说它们在Linux上的Optimus设置中不能很好地发挥作用。)至少有一种方法可以在Ubuntu的GPU上使用OpenCL吗?

最佳方法

我刚刚进行了一些实验,可以确认Eric Appleman的说法,即Bumblebee对于CUDA并不是必需的。 (有关Bumblebee的更多信息:Is a NVIDIA GeForce with Optimus Technology supported by Ubuntu?)

但是,当您需要使用OpenGL显示图形示例时,您确实需要诸如Bumblebee for Optimus系统之类的东西,否则,您在显示器上看不到任何东西或得到错误:

ERROR: Support for necessary OpenGL extensions missing.

运行CUDA程序时,需要安装CUDA工具包和nvidia驱动程序。如果打算编译程序,则还需要SDK。可以在http://developer.nvidia.com/cuda-downloads上找到安装程序,在使Optimus笔记本电脑出现故障之前,请阅读以下说明。

安装CUDA

Driver

我建议从Ubuntu的软件包管理器中安装nvidia驱动程序。如果安装Bumblebee,则无需担心驱动程序。否则,在安装后,如https://askubuntu.com/a/107746/6969所述禁用nvidia库。如果不这样做,您将失去3D加速并可能卡在低分辨率上。

Toolkit

基本上,您必须下载安装程序,使其可执行并运行。 -下载安装程序。在撰写本文时,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行之后,将${RENDERCHECKGLLIB}${OPENGLLIB}交换,如下所示:

    LIB += $(RENDERCHECKGLLIB) ${OPENGLLIB} $(PARAMGLLIB) ${LIB} -ldl -rdynamic
    
  • 再行几(5)行,执行相同操作,但也删除-lcuda

  • 再进一步(7)行,与271行中的操作相同。

使用CUDA

CUDA不需要nvidia-driven 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 FalappaLekensteyn’s答案):

确实有可能使nVidia Optimus GPU在Ubuntu上运行CUDA。

CUDA不需要大黄蜂。 (有关Bumblebee的更多信息:Is a NVIDIA GeForce with Optimus Technology supported by Ubuntu?)

但是,当您需要使用OpenGL显示图形示例时,您确实需要诸如Bumblebee for Optimus系统之类的东西,否则,您在显示器上看不到任何东西或得到错误:

ERROR: Support for necessary OpenGL extensions missing. 

如果您需要使用诸如Blender之类的graphics-intensive程序,Bumblebee当前是一个不错的选择。

如果您不想安装Bumblebee(即不需要OpenGL),请跳至安装CUDA。否则,请继续阅读。

安装大黄蜂

请遵循How well do laptops with Nvidia Optimus work?上的说明

这些目前由Bumblebee开发人员保留为up-to-date。

一旦安装了Bumblebee并重新启动,便可以使用optirun程序选择启动程序时要使用的图形卡。例如:

optirun blender

要快速测试所有操作是否正常,请使用:

optirun glxspheres

如果一切正常,您将看到一个带有彩色旋转球的程序。

验证终端中的GL供应商字符串是否包含单词nvidia。如果仅运行glxspheres,则会看到供应商字符串包含Intel卡。

运行CUDA程序时,需要安装CUDA工具包和nvidia驱动程序。如果打算编译程序,则还需要SDK。可以在http://developer.nvidia.com/cuda-downloads上找到安装程序,在使Optimus笔记本电脑出现故障之前,请阅读以下说明。

安装CUDA

Driver

我建议从Ubuntu的软件包管理器中安装nvidia驱动程序。如果安装Bumblebee,则无需担心驱动程序。否则,在安装后,如https://askubuntu.com/a/107746/6969所述禁用nvidia库。如果不这样做,您将失去3D加速度,并可能卡在低分辨率上。

Toolkit

基本上,您必须下载安装程序,使其可执行并运行。 -下载安装程序。截至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-driven 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构建

(使用预编译的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构建(more information at this question)不会。

要安装官方的Blender构建,只需遵循this answer中列出的说明即可。

如果已将Blender安装到/usr/lib/blender,则应该能够从终端运行Blender并通过以下方式使用GPU渲染:

 optirun '/usr/lib/blender/blender'

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/8925.html,未经允许,请勿转载。