Debian

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

  • May 2, 2020

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

我知道 Debian 8 帶有使用下載和安裝 CUDA Toolkit 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.

以下說明適用於 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 System Xinput 擴展庫(+ 開發文件?)
  • libXmu - X 視窗系統“雜項實用程序”庫(+ 開發文件?)
  • 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. 使 .run 文件可執行:chmod a+x cuda_7.5.18_linux.run.
  6. 成為根。
  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. 重新呼叫 .run 文件,這次使用 –override 選項。
  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.

引用自:https://unix.stackexchange.com/questions/218163