CUDA 10.2 - 不同的安裝路徑

CUDA 10.2 - 不同的安裝路徑

我在安裝 CUDA 10.2 和 cublas 庫時遇到問題。

Cuda 檔案位於 /usr/local 中,cublas 檔案位於 /usr/include 檔案中。

現在我有一個程序,我必須在其中輸入 Cuda 安裝的 HOME_PATH,以便在哪裡找到它們。

我嘗試將 cublas 檔案符號連結到 /usr/local 但程式找不到所需的檔案。

有沒有辦法將 cublas 檔案複製(受保護)到 /usr/local?或以任何方式更改 cublas 檔案的安裝路徑?

預先非常感謝

克里斯

答案1

下面假設您從具有最新 Nvidia 驅動程式的 Ubuntu 系統開始。

CUDA 只是一個應用程序,但需要特定的(通常是舊的)編譯器版本,並提供自己的(多個版本已過時)視訊驅動程式。
CUDA 版本將擁有自己的目錄:

  • bin——用於執行檔
  • lib64-用於連結函式庫
  • include——編譯器文件

將 CUDA bin 目錄新增至 PATH 環境變數的開頭允許存取這些程式並覆寫系統預設程式(如舊版的 g++、gcc、ar、nm 和 ranlib 的情況)。

將 CUDA lib64 目錄新增至 LD_LIBRARY_PATH 的開頭將允許在程式的標準載入中選取這些(共用)函式庫。

CUDA 包含目錄通常會作為變數新增到 makefile 編譯器標誌中,因此編譯器可以選擇這些檔案。無需將這些 CUDA 檔案散佈到系統 bin、lib 和 include 目錄中。應用程式通常不會這樣做。將 CUDA bin、lib64 和包含檔案保留在 CUDA 版本目錄下可以同時支援多個 CUDA 版本。只需在與每個版本關聯的腳本中修改 PATH 和 LD_LIBRARY_PATH 即可。

程式分離的例外可能是安裝系統提供的較舊編譯器 - CUDA 10.2 需要 gcc-8 和工具(ar-8、nm-8、ranlib-)。透過新增至 CUDA bin 目錄的連結(gcc、ar、nm、ranlib)存取舊編譯器。避免將系統預設更改為舊編譯器(例如透過連結或更新替代方案)。

如果被迫使用較舊的編譯器(例如視訊驅動程式),系統的其他部分可能會崩潰。足夠舊的 CUDA 版本可能需要標準儲存庫未提供的舊編譯器(例如 CUDA 8.0 的 gcc-5)。您需要提供自己的此類編譯器副本以及它所需的任何共用程式庫——放入 CUDA 發行版 bin 和 lib64 目錄中。

以這種方式設定 CUDA 版本很簡單,只需將提供的 deb 檔案解壓縮到您選擇的位置即可:

dpkg-deb --extract CUDAarchive YourDirectory

這曾經是所需要的全部,但像 10.2 這樣的 CUDA 版本只是將提供的 deb 檔案的內容添加到更多的 deb 檔案中。記下舊版本中不需要的 Nvidia deb 文件,忽略或刪除它們,然後解壓縮所有單獨的 deb 文件。您現在有一個CUDA 版本目錄,因此設定一個腳本來更改您的PATH 和LD_LIBRARY_PATH (或者,如果您不關心多個CUDA 版本,只需將這些更改放入您的.profile 中(假設您使用bash 類型的shell)。

這種方法將所有 CUDA 檔案保留在套件管理器之外,因此不會進行任何更新——這可能是好是壞,具體取決於您的觀點。

不幸的是,如果您只執行「執行檔案」腳本或安裝提供的 CUDA 發行版 deb,將會出現問題。

  1. 舊的 Nvidia 驅動程式將取代您目前的視訊驅動程式。希望您仍然能夠登入。
  2. 重新安裝目前的 Nvidia 驅動程式可能會導致舊驅動程式及其所有相依性(即所有 CUDA 檔案)被刪除。好吧,永遠不要阻止套件管理器做它的事情,但您可以複製整個 CUDA 版本,讓套件管理器刪除它,然後恢復它。

所有這些使用套件管理器的解決方法最終將導致如上所述的無套件管理器的 CUDA 版本。

相關內容