四、服务器环境(Linux + Anaconda + python 3.7.11 + cuda 10.0 + pytorch-gpu 1.4.0的安装)

时间:2022年3月31日
问题:前几天安装一个图像处理库时,下面提示安装pytorch-cpu没在意,结果今天在服务器上测试的时候出现问题:(大概就是cuda不能用)
指令后加上:
python3 train.py --dataroot ./datasets/label2image --name label2image_cyclegan --model cycle_gan --pool_size 50 --no_dropout –gpu_ids -1
就是使用cpu运行程序便可以运行了,但是这意思是我不能用gpu了。
原因:pytorch现在是cpu版本

问题的解决方案就是卸了重装,但是一旦pytorch是CPU的,里面有很多东西都改了,包括函数啥的,简单粗暴的我当然是选重装了。
有一篇删除pytorch的博客,不清楚有没有用:
https://blog.csdn.net/qq_46941656/article/details/119701547

重装首先是cuda版本,
nvcc -V指令下显示10.0
nvidia -smi 指令下显示是11.2
这个问题之前讨论过,以nvcc -V显示的为准。


2022年4月更新:
可以看到nvcc -v 和 nvidia-smi 两个对应的CUDA版本并不一样,其实是因为CUDA 有两种API,分别是 运行时 API 和 驱动API,即所谓的 Runtime API 与 Driver API。 nvidia-smi 的结果除了有 GPU 驱动版本型号,还有 CUDA Driver API的型号,这里是 10.0。而nvcc的结果是对应 CUDA Runtime API。
而我们安装的时候,要和nvcc的保持一致。
以上所说的都是机器的cuda,而anaconda也有自己的cuda。
anaconda有一个包叫cudatookit,在安装pytorch gpu版的时候要安装(不知道是不是可选,有时候没装也没事。)
cudatookit的版本,介于nvcc-V 和 nvidia-smi的版本之间就不会有错。不用非得和nvcc-V的版本保持一致,这是我实践出来的。
只装anaconda的cudatookit 我感觉不行,但是没试过。


在Windows、docker、Anaconda上都适用。

所以版本是10.0,在官网是找不到1.2以上的版本的链接的。
版本对应表如下:
四、服务器环境(Linux + Anaconda + python 3.7.11 + cuda 10.0 + pytorch-gpu 1.4.0的安装)_第1张图片
四、服务器环境(Linux + Anaconda + python 3.7.11 + cuda 10.0 + pytorch-gpu 1.4.0的安装)_第2张图片
四、服务器环境(Linux + Anaconda + python 3.7.11 + cuda 10.0 + pytorch-gpu 1.4.0的安装)_第3张图片
然后,根据

https://blog.csdn.net/qq_36246347/article/details/106721535?spm=1001.2101.3001.6650.3&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-3.pc_relevant_antiscanv2&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-3.pc_relevant_antiscanv2&utm_relevant_index=6

pip install torch===1.4.0+cu100 torchvision===0.5.0+cu100 -f https://download.pytorch.org/whl/torch_stable.html

成功装上了pytorch1.4。

利用上篇博客中测试代码进行测试没问题。

import time
import torch 
print(torch.__version__)
##################################################
print(torch.cuda.is_available())
for i in range(1,10):
    start = time.time()
    a = torch.FloatTensor(i*100,1000,1000)
    a = a.cuda() #a = a
    a = torch.matmul(a,a)
    end = time.time() - start
    print(end)

但是,在执行的过程中又出现:
ImportError: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21‘ not found
这个错误也是一开始就有的 动态路径问题。
参考:
https://blog.csdn.net/weixin_31866177/article/details/110231292?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1.pc_relevant_default&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1.pc_relevant_default

在这里面要注意路径的修改:

strings /data/XXX/anaconda3/bin/../lib/./libstdc++.so.6 | grep GLIBCXX_3.4.21

这一句应该是:就是自己的anaconda地址。

strings /usr/local/anaconda3/bin/../lib/./libstdc++.so.6 | grep GLIBCXX_3.4.21
vim /home/XXX/.bashrc

改为:

vim /home/czf/.bashrc

另外,vim的指令:

i : insert
ESC : 退出当前模式
:wq! : 保存并退出
:q! : 退出

补充:装好一切后,又出现错误,大概就是在高版本pytorch训练的模型不能在低版本pytorch上使用。所以要重新训练啦。

3090服务器:

conda install pytorch==1.8.0 torchvision==0.9.0 torchaudio==0.8.0 cudatoolkit=11.1

你可能感兴趣的:(自由与希望,系统安装)