如何在 Ubuntu 17.10 上安装 CUDA 9

B0r*_*rk4 42 cuda 17.10

Ubuntu 17.10 附带 CUDA 8,它依赖于 clang 3.8(例如,请参阅此博客文章)。

但是,如果可能,我想安装 CUDA 9 并依赖 GCC。我怎样才能做到这一点?

B0r*_*rk4 58

安装NVIDIA驱动384

首先,我们在配备 NVIDIA GPU 的计算机上安装全新的 Ubuntu 17.10,并在此过程中选择“安装第三方软件”。或者,我们可以手动添加图形驱动程序存储库:

sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt update
Run Code Online (Sandbox Code Playgroud)

然后我们使用 apt 安装最新的 NVIDIA 驱动程序:

sudo apt install nvidia-384 nvidia-384-dev
Run Code Online (Sandbox Code Playgroud)

我们通过运行来验证安装:

nvidia-smi
Run Code Online (Sandbox Code Playgroud)

我们应该看到一个输出,其中列出了 NVIDIA 384 驱动程序和我们的独立 NVIDIA GPU - 类似于下表:

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 384.90                 Driver Version: 384.90                    |
|                                                                             |
|-------------------------------+----------------------+----------------------+
|   0  Quadro M500M        Off  | 00000000:06:00.0 Off |                  N/A |
| N/A   48C    P0    N/A /  N/A |    943MiB /  2002MiB |     26%      Default |
+-------------------------------+----------------------+----------------------+
Run Code Online (Sandbox Code Playgroud)

准备安装CUDA 9 + SDK

我们安装了一些我们稍后需要的构建/开发包:

sudo apt-get install g++ freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libglu1-mesa libglu1-mesa-dev
Run Code Online (Sandbox Code Playgroud)

我们注意到 17.10 上的默认 gcc/g++ 版本是7.2.0 (Ubuntu 7.2.0-8ubuntu3)

gcc -v
Run Code Online (Sandbox Code Playgroud)

CUDA 9 需要 gcc 6。因此,我们安装它:

sudo apt install gcc-6
sudo apt install g++-6
Run Code Online (Sandbox Code Playgroud)

请注意,默认的 gcc 版本仍然是7.2; 可以通过gcc -v再次运行来检查。

安装CUDA 9 + SDK

CUDA Toolkit Archive 中,选择其中一个“runfile (local)”安装包下载一个版本的 CUDA 9,例如

wget https://developer.nvidia.com/compute/cuda/9.0/Prod/local_installers/cuda_9.0.176_384.81_linux-run
Run Code Online (Sandbox Code Playgroud)

使下载的文件可执行并使用 sudo 运行它:

chmod +x cuda_9.0.176_384.81_linux-run 
sudo ./cuda_9.0.176_384.81_linux-run --override
Run Code Online (Sandbox Code Playgroud)

我们使用以下配置安装 CUDA:

You are attempting to install on an unsupported configuration. Do you wish to continue?
y
Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 384.81?
n
Install the CUDA 9.0 Toolkit?
y
Enter Toolkit Location
[default location]
Do you want to install a symbolic link at /usr/local/cuda?
y
Install the CUDA 9.0 Samples?
y
Enter CUDA Samples Location
[default location]
Run Code Online (Sandbox Code Playgroud)

为 gcc/g++ 设置符号链接:

sudo ln -s /usr/bin/gcc-6 /usr/local/cuda/bin/gcc
sudo ln -s /usr/bin/g++-6 /usr/local/cuda/bin/g++
Run Code Online (Sandbox Code Playgroud)

使用 SDK 测试 CUDA 9 安装

构建您最喜欢的 CUDA 示例并运行它:

cd ~/NVIDIA_CUDA-9.0_Samples/5_Simulations/smokeParticles
make
../../bin/x86_64/linux/release/smokeParticles 
Run Code Online (Sandbox Code Playgroud)

您可能希望在 cuda 安装后设置 gcc/g++ 符号链接。

  • 为gcc 6编译器添加符号链接的两个命令必须在安装cuda之后执行,因为安装之前/usr/local/cuda不存在 (11认同)
  • 我不得不做`sudo ln -s /usr/bin/gcc-6 /usr/local/cuda-9.0/bin/gcc sudo ln -s /usr/bin/g++-6 /usr/local/cuda-9.0 /bin/g++` 或 `sudo ./cuda_9.0.176_384.81_linux-run --override` 作为下面的作者建议安装成功,没有编译器冲突 (4认同)

小智 5

安装这个花费的时间比我想承认的要多,虽然上面的答案是一个很好的模板,但我在全新安装 Ubuntu 17.10 时需要一些额外的步骤:

新黑名单

sudo vim /etc/modprobe.d/blacklist.conf
Run Code Online (Sandbox Code Playgroud)

添加以下内容:

# this one might not be required for x86 32 bit users.
blacklist amd76x_edac 

blacklist vga16fb
blacklist nouveau
blacklist rivafb
blacklist nvidiafb
blacklist rivatv
Run Code Online (Sandbox Code Playgroud)

更新 initramfs 磁盘

sudo update-initramfs -u
Run Code Online (Sandbox Code Playgroud)

停止 gdm3

sudo /etc/init.d/gdm3 stop

sudo init 3
Run Code Online (Sandbox Code Playgroud)

获取内容

sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt update
sudo apt install nvidia-384 nvidia-384-dev
sudo apt-get install g++ freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libglu1-mesa libglu1-mesa-dev

nvidia-smi
Run Code Online (Sandbox Code Playgroud)

获取包裹

wget https://developer.nvidia.com/compute/cuda/9.0/Prod/local_installers/cuda_9.0.176_384.81_linux-run
Run Code Online (Sandbox Code Playgroud)

使用 --override 运行以覆盖编译器选择

chmod +x cuda_9.0.176_384.81_linux-run 
sudo ./cuda_9.0.176_384.81_linux-run --override
Run Code Online (Sandbox Code Playgroud)

安装软件包后,我会收到 nvidia-smi 错误,因此我建议再次运行该命令以验证它是否有效。当我遇到问题时,我会清除 nvidia* 并重新获取它。

nvidia-smi
Run Code Online (Sandbox Code Playgroud)