2012-11-27 105 views
0

我在共享機器上,沒有root權限。交叉編譯爲舊的CUDA工具包版本?

我的代碼與死亡下面CUDA錯誤

CUDA driver version is insufficient for CUDA runtime version

我想建立我的程序爲老工具包。我會認爲這是可能的,因爲商業應用程序是在最新的工具包(?)的支持下發布的。

我玩過arch的標誌,但沒有成功。

nvcc -arch=compute_13 fun.cu 
nvcc -arch=compute_20 fun.cu 

什麼標誌可以編譯爲早期的工具包版本? 在我的情況下,我有一個版本4工具包,但我相信驅動程序只有版本3

+0

我發現我在羣集上運行,而且我在登錄節點上而不是計算節點上運行。登錄節點必須有一些nvidia硬件。 – Mikhail

回答

2

例如,我不知道命令行標誌或類似的選項來告訴CUDA 4.x工具箱的行爲如同它是一個CUDA 3.x工具箱一樣。

而且正如您發現的,對於特定版本的工具包,需要特定的驅動程序版本(或更新版本)。

一種方法是自行安裝所需的工具包。您不需要root權限,但是您的用戶目錄中需要一些磁盤空間。選擇所需的工具包from the archive並將其安裝到用戶目錄空間的本地目錄中。 (該工具包將提示您輸入安裝位置,並獲得其他工具包安裝選項,您可以執行此操作:sh <toolkit filename> --help)。將工具包安裝到本地目錄後,例如/ home/user/cuda,然後將PATH修改爲include/home/user/cuda/bin(在任何其他cuda目錄之前,例如/ usr/local/cuda/bin),並將LD_LIBRARY_PATH包含到/ home/user/cuda/lib和/ home/user/cuda/lib64(在任何其他cuda lib目錄之前)。如果要使這些文件永久化,可以編輯.bashrc文件或使用類似的方法,具體取決於distro/shell。你應該能夠正常輸入你的nvcc編譯命令。如果您鏈接到cublas等任何特定庫中,則需要像往常一樣使用-L編譯器/鏈接器開關指向本地目錄中的cublas庫。

驅動程序不受任何此類影響,也不在諸如/ usr/local/cuda之類的社區位置安裝cuda工具包。如果您還原PATH和LD_LIBRARY_PATH環境變量,則應恢復以前使用社區位置中安裝的cuda工具包的功能。

1

首先,您需要下載並安裝舊的工具包到您的主目錄。

一旦完成,您可以執行以下操作。

設置CUDADIR =路徑/到/ CUDA /在你的.bashrc

一旦你的,你如果你正在使用的Makefile,你可以使用$(CUDADIR)/bin/nvcc爲你的編譯器,並$(CUDADIR)/lib64你的庫路徑,$(CUDADIR)/include爲你的包含路徑。

如果您正在使用shell腳本或在命令行上編譯,請使用$CUDADIR/bin/nvcc等。

另一種選擇是將$ CUDADIR/bin預置到$ PATH中,如下所示.bashrc。

CUDADIR=/home/username/cuda 
export PATH=$CUDADIR/bin:$PATH 
export LD_LIBRARY_PATH=$CUDADIR/lib64:$LD_LIBRARY_PATH 

一旦你的系統進行更新,你可以改變通過CUDADIR指向新的位置的路徑,你會不會有改變任何東西。

-arch標誌將指定體系結構而不是工具包版本。