如何在Debian 8(Jessie)或9(Stretch)上安装CUDA Toolkit 7/8/9?


26

如何在Debian 8上安装Cuda Toolkit 7.0或8?

我知道,Debian的8自带的选项,下载并安装CUDA工具包6.0使用apt-get install nvidia-cuda-toolkit,但你如何为CUDA工具包7.0版或8做到这一点?

我尝试使用Ubuntu安装程序进行安装,如下所述:

sudo wget http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1404/x86_64/cuda-repo-ubuntu1404_7.0-28_amd64.deb

dpkg -i cuda-repo-ubuntu1404_7.0-28_amd64.deb

sudo apt-get update

sudo apt-get install -y cuda

但是,它不起作用,并返回了以下消息:

Reading package lists... Done
Building dependency tree       
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 cuda : Depends: cuda-7-0 (= 7.0-28) but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

@nullgeppetto:请尝试按照下面我的回答中的说明进行操作:-)
einpoklum-恢复莫妮卡2015年

Answers:


30

以下说明适用于CUDA 7.0、7.5和多个先前(可能以后)版本。至于Debian发行版,它们对Jessie和Stretch和其他版本有效。它们采用amd64(x86_64)架构,但是您可以轻松地将它们改编为x86(x86_32)。

安装先决条件

  • g ++ -您应该使用CUDA版本支持的最新GCC版本。对于CUDA 7.x,它将是4.9.3版本,位于4.x行的最后;对于CUDA 8.0,支持GCC 5.x版本。如果您的发行版默认使用GCC 5.x,请使用它,否则应使用GCC 5.4.0。较早的版本是可用的,但我不推荐使用它们,即使仅是为了更好地支持主机端代码的现代C ++功能。
  • gcc -g ++随附。我什至认为CMake在某些情况下可能会默认使用nvcc调用gcc而不是g ++进行-x切换(但对此不确定)。
  • libGLU -Mesa OpenGL库(+开发文件?)
  • libXi -X Window系统Xinput扩展库(+开发文件?)
  • libXmu -X Window系统“杂项实用程序”库(+开发文件?)
  • Linux内核 -您正在运行的内核版本的标头。

如果要获取特定软件包的列表,则取决于确切的发行版,但是请尝试以下操作(对于CUDA 7.x):

sudo apt-get install gcc g++ gcc-4.9 g++-4.9 libxi libxi6 libxi-dev libglu1-mesa libglu1-mesa-dev libxmu6 libxmu6-dev linux-headers-amd64 linux-source

您可能会添加-dbg这些软件包的某些版本以调试符号。

确定这涵盖了所有内容-但我可能已经错过了刚安装的东西。另外,CUDA可以至少在实验上使用clang,但是我还没有尝试过。

安装CUDA内核驱动程序

  1. 转到NVIDIA的CUDA下载页面
  2. 选择“ Linux”>“ x86_64”>“ Ubuntu”,然后选择其具有的最新版本(撰写本文时:Ubuntu 15.04)。
  3. 选择.run文件选项。
  4. 下载.run文件(当前是文件)。确保不要将其放入/tmp
  5. 令。运行可执行文件:chmod a+x cuda_7.5.18_linux.run
  6. 成为root。
  7. 执行.run文件:假装接受其愚蠢的收缩包装许可证;对只安装NVIDIA内核驱动程序说“是”,对其他所有命令说“否”。

安装程序应该告诉您它希望已经安装了NVIDIA内核驱动程序,但是您应该在继续/重试工具包安装之前重新启动。所以...

  1. 显然已成功,请重新启动。

本身安装CUDA

  1. 成为根。
  2. 找到并执行 cuda_7.5.18_linux.run
  3. 这次,对安装驱动程序说“否”,对安装其他所有驱动程序说“是”,并接受默认路径(或更改默认路径,只要适合您即可)。

安装程序现在可能会失败。假设这是我们所期望的那种失败,那是一件好事:它应该告诉您您的编译器版本不受支持-CUDA 7.0或7.5支持最高gcc 4.9,并且默认情况下具有某些5.x版本。现在,如果您收到有关缺少的消息,则意味着我上面有关先决条件的说明以某种方式失败了,您应该在此处进行评论,以便我进行修复。假设您遇到了“失败”,请继续执行以下操作:

  1. 这次使用--override选项重新调用.run文件。
  2. 进行与步骤11中相同的选择。

CUDA现在应该被安装,默认情况下/usr/local/cuda(是一个符号链接)。但是我们还没有完成!

指导NVIDIA的nvcc编译器使用正确的g ++版本

NVIDIA的CUDA编译器实际上是在链接过程中调用g ++和/或编译实际的C ++而不是.cu文件。我认为。无论如何,它默认运行路径中的任何内容g++;但是,如果您在下放置另一个g++/usr/local/cuda/bin,它将首先使用它!所以...

  1. 执行symlink /usr/bin/g++-4.9 /usr/local/cuda/bin/g++(并且也可能采取适当措施)symlink /usr/bin/gcc-4.9 /usr/local/cuda/bin/gcc

而已。

试用安装

  1. cd /root/NVIDIA_CUDA-7.5_Samples/0_Simple/vectorAdd
  2. make

构建应该成功完成,并且在完成时

  1. ./vectorAdd

您应该获得以下输出:

root@mymachine:~/NVIDIA_CUDA-7.5_Samples/0_Simple/vectorAdd# ./vectorAdd
[Vector addition of 50000 elements]
Copy input data from the host memory to the CUDA device
CUDA kernel launch with 196 blocks of 256 threads
Copy output data from the CUDA device to the host memory
Test PASSED
Done

笔记

  • 您不需要安装NVIDIA GDK(GPU开发套件),但是它没有什么坏处,对某些人可能很有用。将其安装到系统的根目录;非常安全,之后有一个卸载程序:/usr/bin/uninstall_gdk.pl。在CUDA 8中,它已经集成到CUDA自身的IIANM中。
  • 不要安装其他名称如nvidia -...或cuda ...的软件包。他们可能不会受到伤害,但他们肯定不会有所帮助。
  • 在执行任何这些操作之前,您可能需要使用来确保完全识别您的GPU lspci | grep -i nvidia

...好吧,几乎所有这一切:当然,如果您不是root用户,则无法安装内核驱动程序。但是,没有它,您可以构建(不运行)CUDA代码。
einpoklum-恢复莫妮卡

刚试过这个。cuda安装程序只是拒绝安装。它会警告您应使用.deb文件,以防万一。

@WernerVanBelle:您可以将其作为一个单独的问题发布吗?或者,如果警告太短,至少要引用警告?另外,IIRC有一些“强制”命令行选项,您尝试过吗?
einpoklum-恢复莫妮卡

所有这些-除了安装驱动程序外-还可以在您的主目录中以非root用户身份完成,但这仅足以构建 CUDA代码,而不能运行它。为此,您需要在内核中使用适当的nVIDIA驱动程序,并且只有root用户才能实现。对不起,我先前的评论建议不这样。另外,要以非root用户身份进行构建,如果您的发行版仅具有较新版本,则可能需要构建自己的gcc / g ++版本(对于CUDA 7.x,则需要gcc 4.9.3)。
einpoklum-恢复莫妮卡

@celavek:如果您认为此答案不能很好地涵盖Debian 9,请在做出建议的编辑之前解释原因。
einpoklum-恢复莫妮卡

6

我认为您应该使用反向端口来完成它,实际上我正在nvidia-cuda-toolkitdebian jessie上顺利安装7.5。

向您的添加非免费的反向端口/etc/apt/sources.list。对于我(在jessie上),我只是将其放在文件的底部:

# jessie-backports
deb http://httpredir.debian.org/debian jessie-backports main contrib non-free

保存,apt-get更新,最后:

apt-get install -t jessie-backports nvidia-cuda-toolkit

1

在向sources.list添加contrib和非免费存储库并运行apt-get update之后,CUDA Toolkit位于Synaptic的nvidia-cuda-toolkit下。


1

使用较旧的GPU(GT 720)进行Debian 9“拉伸”时,需要执行其他步骤。我看到上面的某人(@celavek)拥有此功能,因此我将填写对我有用的内容。可接受的答案几乎涵盖了所有需要的内容。认识到这是一个很好的利基示例,但希望这里可能有一些有用的东西,可以为人们节省一些Google搜索的费用。

对于第1步中的CUDA 8.0,单击“传统版本”,然后选择“ CUDA Toolkit 8.0 GA 2”。然后是Linux,x86_64,Ubuntu,16.04,运行文件(本地)。

我不接受打包的驱动程序,而是将以前安装的384.130驱动程序用于我的GPU。此处的更多信息:Debian Wiki。您的里程可能会有所不同,除了GT 720以外,我不能说其他卡。这是我选择的道路,但我没有后悔(至今)。

当由于步骤12中无法本地安装InstallUtils.pm而导致安装失败时,您将需要解压缩cuda_8.0.61_375.26_linux.run文件,但使用--tar mxvf标志运行它。然后(以root用户身份)将InstallUtils.pm复制到/ usr / lib / x86_64-linux-gnu / pearl-base:

./cuda_8.0.61_375.26_linux.run --tar mxvf
sudo cp InstallUtils.pm /usr/lib/x86_64-linux-gnu/perl-base

现在,第12步命令应该成功了。

您的Debian 9.0随附了g ++版本6+,但不会这样做。步骤15中的vectorAdd编译将失败。我遵循了这份白皮书:安装GCC的多个版本以安装版本5.5.0。对于5.5.0,您将需要此文件

wget http://mirrors.concertpass.com/gcc/releases/gcc-5.5.0/gcc-5.5.0.tar.xz

并用以下方法打开压缩包:

tar -xJf gcc-5.5.0.tar.xz

我需要更新一些内容(库并添加32位编译)以使其对我有用:

sudo apt-get install libgmp3-dev libmpfr-dev libmpc-dev
sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install build-essential gcc-multilib rpm libstdc++6:i386 libgcc1:i386 zlib1g:i386 libncurses5:i386

现在,您可以配置,制作和安装编译器。

请记住使用--prefix = / usr / local / gcc / 5.5.0标志进行配置

现在,您可以使用以下命令在步骤15中编译vectorAdd示例:

make HOST_COMPILER=/usr/local/gcc/5.5.0/bin/g++

或这个:

export HOST_COMPILER=/usr/local/gcc/5.5.0/bin/g++
make

无需修改Makefile,它可以正确处理编译器的覆盖。

您现在应该可以正常运行CUDA 8.0安装。


0

尝试从此页面使用适用于Ubuntu的网络安装程序:

https://developer.nvidia.com/cuda-downloads#linux

Ubuntu 14. *的安装程序应该足够兼容。


1
我应该提到ubuntu安装程序无法正常工作-更新了帖子以反映这一点。
格雷格

@Greg,您知道最终如何在Debian上安装Cuda吗?
nullgeppetto 2015年

@nullgeppetto我最终放弃了Debian的想法,因为发现太多无法解决的兼容性问题。
格雷格

@Greg,嗯,这就是我所担心的..那么,你去* ubuntu还是其他?就个人而言,我仍在等待我的gtx 960,因此我将尝试使用Debian ...如果需要,我会通知您。
nullgeppetto

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.