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


28

背景:我是3D艺术家(出于业余爱好),最近开始将Ubuntu 12.04 LTS用作Windows 7的双启动。它正在运行于带有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的程序(例如Blender)?我需要nVidia驱动程序吗?(我听说它们在Linux上的Optimus设置中不能很好地发挥作用。)至少有一种方法可以在Ubuntu的GPU上使用OpenCL吗?

Answers:


27

我刚刚进行了一些实验,可以确认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稍后必须在运行程序时进行设置。

开发包

如果您希望能够编译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 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混合器


谢谢,我将向您颁发赏金(但我将接受我的Community Wiki答案)。
彼得·卡塞塔

另外,100个代表和一个投票不能准确表达我对您在Bumblebee项目上所做的工作表示感谢。您和您的同事已经使它成为了很棒的软件。所以谢谢。:)
彼得·卡塞塔

2
不用客气,现在我希望时间能以PRIME的形式为我们提供最终解决方案,并带有更新的xorg + mesa(或Wayland?)堆栈:)
Lekensteyn 2012年

1
PRIME,Xorg是负责向您显示图形的显示服务器,Mesa是OpenGL,Wayland是Xorg的继任者。
Lekensteyn'5

1
应该注意的是,CUDA需要最低的NVIDIA驱动程序。例如,CUDA 6.5至少需要NVIDIA 340.21。
Yamaneko,2015年

15

这是完整的答案(基于Alex FalappaLekensteyn的答案):

确实有可能使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

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

验证终端中的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在运行程序时进行设置。

开发包

如果您希望能够编译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构建

(使用预编译的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'

Bumblebee的最新版本(从Bumblebee / stable PPA安装)不需要此usermod命令。我将更新Askubuntu.com/a/36936/6969上的安装说明,因此,请链接到该帖子,而不要复制这些安装说明。
Lekensteyn'5

@Lekensteyn好的,完成了!
彼得·卡塞塔

2

目前,Linux下对混合图形(通常是Intel集成图形和Nvidia离散图形)的支持有些麻烦。X服务器字段中的某些东西正在缓慢移动,但是请屏住呼吸。

如您所料,大黄蜂目前是一个不错的选择。

我最近购买了具有Intel / Nvidia显卡的Asus 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

并验证GL供应商字符串包含单词Nvidia。如果改为运行:

glxspheres

供应商字符串应包含英特尔词


在安装Bumblebee之前,我需要安装nVidia驱动程序吗?根据您的回答方式,我猜不是。另外,很高兴看到有人能够通过Optimus卡在Ubuntu上使用CUDA!我将在获得15次代表后立即投票赞成。:)
彼得·卡塞塔

好的,我安装了Bumblebee。我曾经使用过,optirun并且可以验证Blender是否正在使用nVidia GPU渲染3D视口。但是,Blender用户首选项中的下拉菜单中没有“ GPU”选项。它仅列出“ CPU”。查看此屏幕截图。我是否需要安装其他驱动程序才能使用CUDA?
彼得·卡塞塔

1

我发现,运行CUDA的所有例子,使用大黄蜂,你必须从安装驱动程序295.40 这里和安装过程中选择不覆盖config x11

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.