如何在Ubuntu 20.04的Anaconda不同环境中安装不同的CUDA版本(2020年8月)

我觉得这个需求肯定很多朋友都有。

首先应该考虑一点:如果装了不同版本的CUDA,是不是也得装不同版本的cuDNN?我目前的结论是:为了不影响系统中本来的cuDNN,是可以不装的。按照这篇博客的介绍:https://www.cnblogs.com/laosan007/p/12612511.html

“如果没有编译cuDNN的话,执行一些基于Caffe这一深度学习框架的程序速度上要慢3-5倍”

这个measurement我没有自己做过,如果目的仅仅是为了试着跑一下别人的代码,完全可以不理会cuDNN。另外针对上面的这个博客有点疑问,这篇博客里说:“这种方法如果不重置cuDNN相应的符号链接的话是不能成功的安装cuDNN的。”呵呵,我仔细拜读了这篇文章很多遍,也没发现他在什么地方重置了所谓的符号链接啊。

言归正传,首先,我们应该清楚针对目前系统中的显卡驱动,能够装哪些版本的CUDA,具体可以参考这里:

https://blog.csdn.net/hesongzefairy/article/details/89946900

当然我还是有点疑问,如果显卡驱动比较新,装老的版本的CUDA会有什么影响吗?这个表并不能看出这一点。

其次,要搞清楚我们为什么要装多个版本的CUDA,原因也很简单,一些老版本的PyTorch对应的CUDA也比较老。那怎么样知道我们要用的pytorch版本对应的CUDA呢,这个说实话从PyTorch的主页是看不出来的:https://pytorch.org/get-started/locally/

不过可以用一些迂回的方法:我们在这里:https://pytorch.org/get-started/previous-versions/#via-pip

可以看到下面几个链接实际上列出了CUDA版本所能对应的pytorch版本:

Download the whl file with the desired version from the following html pages:

例如我们点开这个:https://download.pytorch.org/whl/cu92/torch_stable.html

可以看到,最早的PyTorch版本是0.4.1了,例如我现在要用PyTorch 0.3.0,那似乎装CUDA 9.2可能不行。

所以我决定装CUDA 9.0试试。在这里:https://developer.nvidia.com/cuda-toolkit-archive

找到9.0的链接:https://developer.nvidia.com/cuda-90-download-archive

按照这里的建议:https://blog.csdn.net/tunhuzhuang1836/article/details/79545625

我们需要选择runfile进行安装(这样可以做到不影响之前的版本):

下载下来之后按照这里的教程正常安装即可:https://blog.csdn.net/ashome123/article/details/105822040/

结果我运行了:

sudo sh cuda_9.0.176_384.81_linux.run

之后报错:

Error: cannot find Toolkit in /usr/local/cuda-9.0

呵呵呵。

先试了一下大家说的最简单的办法:

sudo apt install nvidia-cuda-toolkit

结果经过漫长的等待,报了一堆:ibcudnn_cnn_train.so.8 is not a symbolic link这样的错误,看来cudnn的符号链接确实有问题啊。不过我关心的是安装低版本的CUDA,这个问题可以先不管。再试了一遍,结果报了:

unsupported compiler: 7.5.0. Use --override to override this check.

呵呵呵,其实应该早点预料到这个错,按照网友的介绍:https://www.cnblogs.com/simingfan/p/12310833.html

可以改成gcc 6.x,不过改成gcc-6的时候又碰到问题了:

当我输入:

sudo apt install gcc-6 g++-6

会报这样的错:

正在读取软件包列表... 完成
正在分析软件包的依赖关系树       
正在读取状态信息... 完成       
没有可用的软件包 gcc-6,但是它被其它的软件包引用了。
这可能意味着这个缺失的软件包可能已被废弃,
或者只能在其他发布源中找到

E: 软件包 gcc-6 没有可安装候选

呵呵呵呵呵呵,估计是我用的Ubuntu 20.04版本太新了吧。

按照这里网友的建议:https://askubuntu.com/questions/1236552/how-can-i-downgrade-gcc-to-version-6-on-20-04

可以临时地在/etc/apt/sources.list中增加旧版本ubuntu的源(当然这个也很好理解咯)

所以输入:

sudo gedit /etc/apt/sources.list

在打开的文件中的最上面一行增加:

deb http://us.archive.ubuntu.com/ubuntu/ bionic main universe

顾名思义,就是暂时当作Ubuntu 18.04,参考这里:https://blog.csdn.net/songfulu/article/details/85310273

然后再依次运行:

sudo apt-get update
sudo apt install gcc-6 g++-6

就可以正常安装gcc-6了,不过安装完成之后最好是把我们临时加的那一条注释掉。然后再update一下。

这时候我们再输入:

ls /usr/bin/gcc*

我这里可以看到3个gcc,呵呵呵。如下图所示:

然后依次输入:

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-6 150
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 100
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 50

再输入:

sudo update-alternatives --config gcc

可以查看gcc的优先级顺序。

把这些做完之后,再运行一遍:

sudo sh cuda_9.0.176_384.81_linux.run

首先EULA很长的一段文字不要看了,按q跳过,然后需要我们输入的选项如下:

Do you accept the previously read EULA?
accept/decline/quit: accept

You are attempting to install on an unsupported configuration. Do you wish to continue?
(y)es/(n)o [ default is no ]: y

Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 384.81?
(y)es/(n)o/(q)uit: n

Install the CUDA 9.0 Toolkit?
(y)es/(n)o/(q)uit: y

Enter Toolkit Location
 [ default is /usr/local/cuda-9.0 ]: 

Do you want to install a symbolic link at /usr/local/cuda?
(y)es/(n)o/(q)uit: n

Install the CUDA 9.0 Samples?
(y)es/(n)o/(q)uit: n

Installing the CUDA Toolkit in /usr/local/cuda-9.0 ...

最重要的就是注意不要建立到/usr/local/cuda的软连接。

另外需要注意的是:安装完成后,就不要进行环境变量的更新了。我们参考这几位网友的方法:https://blog.csdn.net/clksjx/article/details/86530905

https://zhuanlan.zhihu.com/p/137874101

具体来讲,首先进入到我们想使用其他版本CUDA的anaconda环境中,输入:

echo ${CONDA_PREFIX}

就可以看到这个虚拟环境的绝对路径,例如我的是在这里:/home/yu/anaconda3/envs/pytorch0.3

那么我依次输入以下:

mkdir -p /home/yu/anaconda3/envs/pytorch0.3/etc/conda/activate.d
gedit /home/yu/anaconda3/envs/pytorch0.3/etc/conda/activate.d/activate.sh
chmod +x /home/yu/anaconda3/envs/pytorch0.3/etc/conda/activate.d/activate.sh

在其中第二步打开的文件中输入:

ORIGINAL_CUDA_HOME=$CUDA_HOME
ORIGINAL_LD_LIBRARY_PATH=$LD_LIBRARY_PATH
ORIGINAL_PATH=$PATH
export CUDA_HOME=/usr/local/cuda-9.0
export LD_LIBRARY_PATH=$CUDA_HOME/lib64:$LD_LIBRARY_PATH
export PATH=$CUDA_HOME/bin:$PATH

主要目的就是使对应虚拟环境启动时,自动切换为cuda9.0。

相应地:

mkdir -p /home/yu/anaconda3/envs/pytorch0.3/etc/conda/deactivate.d
gedit /home/yu/anaconda3/envs/pytorch0.3/etc/conda/deactivate.d/deactivate.sh
chmod +x /home/yu/anaconda3/envs/pytorch0.3/etc/conda/deactivate.d/deactivate.sh

在第二步中对我们刚才在两步前对环境变量的修改进行还原:

export CUDA_HOME=$ORIGINAL_CUDA_HOME
export LD_LIBRARY_PATH=$ORIGINAL_LD_LIBRARY_PATH
export PATH=$ORIGINAL_PATH
unset ORIGINAL_CUDA_HOME
unset ORIGINAL_LD_LIBRARY_PATH
unset ORIGINAL_PATH

以上这个过程不能不说是很麻烦啊。到这里终于大功告成!安装完后,对应的环境变量是下面截图中这样的:

看到这个截图后,是不是感觉自己可以愉快地自动切换CUDA版本了?

看到有些朋友这样设置了以后,通过$CUDA_HOME来判断是否设置正确,例如:https://zhuanlan.zhihu.com/p/137874101

应该说,这样判断是不对的!因为正常安装CUDA的时候我们只需要设置PATH和LD_LIBRARY_PATH,并不需要设置$CUDA:https://blog.csdn.net/ashome123/article/details/105822040/

个人认为最稳妥的方法还是输入:

nvcc --version

来检查CUDA的版本。

另外,还有些朋友说可以通过Anaconda自己安装CUDA乃至cuDNN,我试了一下,似乎确实可以,但也有人指出,这种安装并不能保证CUDA的功能完整,在性能方面也会受比较大印象,例如这里的评论:https://blog.csdn.net/xq_nbu/article/details/83188570

“作者留言:通过anaconda自动安装cuda可能会出现cuda安装不全的现象,即有时运行会出现部分组件缺失,故应以实际情况为准,可能还需完整安装cuda和cudnn,本文仅供参考。”

“我用这种方法装完跑程序总是显存不够,8G显存,batchsize设置成4都报错,请问是不是因为这种安装方法的原因?rtx2060s的显卡”

我也一直不理解Anaconda自己装CUDA和cuDNN的思路是怎么回事。总体上来讲,个人感觉还是自己手动安装最好。

上面的工作都完成了之后,我们可以最后展示一下效果。由于如前面所属,Anaconda可以自己装PyTorch,所以我们选择在对应的虚拟环境下通过pip安装,具体就是在这里:https://pytorch.org/get-started/previous-versions/#via-pip

选择CUDA 9.0 build,然后我下载了torch-0.3.0-cp27-cp27mu-linux_x86_64.whl

再通过pip install torch-0.3.0-cp27-cp27mu-linux_x86_64.whl安装即可。最后通过一张截图展示最终效果:

可以保证大家按照上面的流程,也可以得到这样的结果。

  • 9
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 17
    评论
您好!要在Ubuntu 20.04安装Anaconda,请按照以下步骤进行操作: 1. 首先,从Anaconda官方网站(https://www.anaconda.com/products/individual)下载适用于Linux的Anaconda安装程序,选择适合您操作系统位数的版本(32位或64位)。 2. 打开终端,并导航到您下载Anaconda安装程序的目录。可以通过以下命令进入默认的下载目录: ``` cd ~/Downloads ``` 3. 接下来,运行以下命令来确保您下载的安装程序的完整性: ``` sha256sum Anaconda3-xxxxxxx-Linux-x86_64.sh ``` 其,"Anaconda3-xxxxxxx-Linux-x86_64.sh"是您下载的安装程序的文件名。请将命令的文件名替换为您下载的文件名。 确保输出与官方网站上提供的SHA-256哈希值匹配。 4. 接下来,运行以下命令来安装Anaconda: ``` bash Anaconda3-xxxxxxx-Linux-x86_64.sh ``` 同样,请将命令的文件名替换为您下载的文件名。 5. 安装程序将引导您通过一系列提示进行安装。请按照屏幕上的说明进行操作。默认情况下,Anaconda安装在`$HOME/anaconda3`目录下。 6. 安装完成后,运行以下命令来使Anaconda生效: ``` source ~/.bashrc ``` 7. 现在,您已经成功安装Anaconda。可以通过运行以下命令来验证安装: ``` conda --version ``` 如果安装成功,将显示Anaconda版本号。 现在您已经在Ubuntu 20.04安装Anaconda,并可以开始使用它了。祝您使用愉快!如有任何问题,请随时向我提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值