问题描述
今天遇到了这个错误:
ImportError: libcupti.so.11.7:cannot open shared object file: No such file or directory
找了很多帖子,没有解决,最开始看这个博主也没有解决,因为写的太简单了,我是在这个博主基础上进行补充,希望能帮到大家。
问题解决及原因分析
1、原因分析
这个问题很简单,就是在创建虚拟环境的时候把nvidia这个文件目录给丢了或者说没有创建成功,那就需要手动把这个目录添加到对应的目录中。
2、解决办法
首先,找到一个有这个nvidia目录的包,比如:/home/visionx/anaconda3/lib/python3.11/site-packages,我在这里用的是base环境下的nvidia目录(路径:/home/visionx/anaconda3/lib/python3.11/site-packages/nvidia)
然后,找到nvidia目录,把整个目录复制下来
最后,复制到自己的虚拟环境中:/home/visionx/anaconda3/envs/ldm/lib/python3.8/site-packages,复制完成的路径:/home/visionx/anaconda3/envs/ldm/lib/python3.8/site-packages/nvidia
成功。
3、可能出现的意外情况(新的报错)
复制完成后,不再报错,说明是可以找到这个包的,但是能不能用却不清楚。
我的虚拟环境中这个文件的标识有一个红色的叉叉,所以很可能在跑i程序的时候会出现问题,报的错误为:RuntimeError: CUDA unknown error - this may be due to an incorrectly set up environment, e.g. changing env variable CUDA_VISIBLE_DEVICES after program start. Setting the available devices to be zero.。
4、进一步操作
这个问题很可能就是直接复制过来是没有办法直接解析的也可能是版本不对应,所以需要进行进一步的操作。
4.1、检查显卡驱动
nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2020 NVIDIA Corporation
Built on Tue_Sep_15_19:10:02_PDT_2020
Cuda compilation tools, release 11.1, V11.1.74
Build cuda_11.1.TC455_06.29069683_0
————————————————
版权声明:本文为CSDN博主「JaciusCV」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_44777827/article/details/123232314
4.2、查看显卡:watch nvidia-smi
4.3、运行:print(torch.cuda.is_available())
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/kumar/anaconda3/envs/pytorch/lib/python3.8/site-packages/torch/cuda/__init__.py", line 430, in current_device
_lazy_init()
File "/home/kumar/anaconda3/envs/pytorch/lib/python3.8/site-packages/torch/cuda/__init__.py", line 170, in _lazy_init
torch._C._cuda_init()
RuntimeError: CUDA unknown error - this may be due to an incorrectly set up environment, e.g. changing env variable CUDA_VISIBLE_DEVICES after program start. Setting the available devices to be zero.
仔细看,我的报错信息和这个是一致的
所以需要安装nvidia-modprobe,安了就好了。
解决方法也很简单,就是用了这行代码,可能需要root权限。
apt-get install nvidia-modprobe
完结撒花
回到了最开始的地方,却不能成为最开始的人了