需要解決問題:兩個不同的tensorflow項目,一個項目的tensorflow版本是1.13.1,而另一個是1.1.0.由於低版本的tensorflow不能與高版本的CUDA兼容(未解決前使用的是CUDA10.0),所以需要下載CUDA8.0以便運行tensorflow1.1.0版本的項目。

解決方案:

CUDA Toolkit 8.0 - Feb 2017?

developer.nvidia.com

  1. 首先在官網下載CUDA8.0 runfile包

2. 下載完成後,檢查自己電腦的gcc版本是否過高,CUDA8.0適配的gcc版本是4.8:

如果gcc版本過高可以進行降級:

使用命令安裝gcc-4.8:

sudo apt-get install gcc-4.8

安裝完後,使用命令查看目前機器中可用的gcc版本:

ls /usr/bin/gcc*

我的機器中可用的gcc版本有4.8和7

接下來設置默認使用的gcc版本:

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 88

最後的88為優先順序,越大越優先,由於我是第一次設置,所以數字無論多少,gcc-4.8都是最優先的。

現在重新查看gcc版本:

成功

如果需要切換回原來的gcc-7版本,運行下面兩個命令:

sudo update-alternatives --remove gcc /usr/bin/gcc-4.8
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 88

3. gcc版本降級後,運行命令:

sudo sh cuda_8.0.61_375.26_linux.run

如果之前已經安裝過驅動了,在選擇安裝驅動時,選no

可能會出現配置文件不支持,是否繼續的選項,這時可以繼續,看最後報錯信息。

如果是「Missing recommended library: libGLU.so;Missing recommended library: libXmu.so」之類,根據缺少的庫一一安裝上就好:

sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev

4. 我做完以上步驟之後,沒想到還是報錯了:「cannot find Toolkit in /usr/local/cuda-8.0」

在日誌文件中找到了錯誤信息:「Cant locate InstallUtils.pm in @INC (you may need to install the InstallUtils module)(@INC contains: /etc/perl /usr/local/lib/x86_64-linux-gnu/perl/5.26.1 /usr/local/share/perl/5.26.1 /usr/lib/x86_64-linux-gnu/perl5/5.26 /usr/share/perl5 /usr/lib/x86_64-linux-gnu/perl/5.26 /usr/share/perl/5.26 /usr/local/lib/site_perl /usr/lib/x86_64-linux-gnu/perl-base」)

大概意思就是有個文件InstallUtils.pm沒有在它該在的文件夾中。而它應該出現的文件夾可能是以下這些:

/etc/perl
/usr/local/lib/x86_64-linux-gnu/perl/5.26.1
/usr/local/share/perl/5.26.1
/usr/lib/x86_64-linux-gnu/perl5/5.26
/usr/share/perl5
/usr/lib/x86_64-linux-gnu/perl/5.26
/usr/share/perl/5.26
/usr/local/lib/site_perl
/usr/lib/x86_64-linux-gnu/perl-base

不同版本的Ubuntu系統安裝不同版本的CUDA可能是不一樣的,我的Ubuntu版本是18.04,在我的機器中,上面的路徑存在的是/usr/share/perl5。所以我現在需要將缺少的文件,移到這個文件夾中。

使用下面命令建立一個空文件夾,然後將runfile文件解壓,將runfile文件在安裝時缺少的文件複製到上面我找到的目錄中:

mkdir cuda-8.0
sudo sh cuda_8.0.61_375.26_linux.run --noexec --target cuda-8.0
sudo cp cuda-8.0/InstallUtils.pm /usr/share/perl5

完成後再次運行runfile文件,可能還會提示「You are attempting to install on an unsupported configuration. Do you wish to continue?」選擇yes繼續

成功!!!

5. 現在我的機器中既有CUDA10.0也有CUDA8.0,下面我要切換使用的是CUDA8.0

使用以下命令查看系統環境變數配置:

gedit ~/.bashrc

CUDA環境變數如下:

export CUDA_HOME=/usr/local/cuda
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:"$LD_LIBRARY_PATH:/usr/loacl/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64"
export PATH=/usr/local/cuda/bin:$PATH

實質上切換CUDA版本就是將cuda8.0或者cuda10.0鏈接到cuda文件上。

在/usr/local/下打開終端,使用如下命令進行切換:

sudo rm -rf cuda
sudo ln -s /usr/local/cuda-8.0/ /usr/local/cuda

第一個命令是移除原本存在的名為cuda的軟鏈接,第二個命令是將cuda8.0鏈接到一個新的名為cuda的軟鏈接上。

成功!!!


推薦閱讀:
相关文章