记录一次 torch.cuda.is_available()==false的问题解决过程

今天发现 torch.cuda.is_available()==false 无法初始化GPU进行训练.
于是着手开始检查torch的版本和cuda的版本

检查torch的版本

输入python
>>> import torch
>>> print(torch.__version__)

如果带有cpu字样说明你装的不是 gpu版本的, 需要重新安装pytorch
我的是cpu版本的. 于是重装.
再次测试

输入python
>>> import torch
>>> print(torch.cuda.is_available()) 
>>> print(torch.__version__)
>>> print(torch.version.cuda)

输出

False
1.8.0+cu111
11.1

说明torch安装正常. 为啥 还是false呢?
在cmd命令行下执行,.

nvcc -V

输出如下

nvcc: NVIDIA ® Cuda compiler driver
Copyright © 2005-2020 NVIDIA Corporation
Built on Tue_Sep_15_19:12:04_Pacific_Daylight_Time_2020
Cuda compilation tools, release 11.1, V11.1.74
Build cuda_11.1.relgpu_drvr455TC455_06.29069683_0

说明cuda的环境变量是对的. cuda的版本也是对的.

这是为啥呢???
这是为啥呢???
这是为啥呢???
这是为啥呢???
这是为啥呢???

再次用 nvidia-smi 命令查看

nvidia-smi

输出如下:

Mon Nov 08 15:43:40 2021
|-----------------------------------------------------------------------------|
| NVIDIA-SMI 441.22 Driver Version: 441.22 CUDA Version: 10.2 |
|-------------------------------±---------------------±---------------------+
| GPU Name TCC/WDDM | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===========================================================|
| 0 GeForce GTX 1070 WDDM | 00000000:03:00.0 On | N/A |
| 0% 30C P8 9W / 200W | 662MiB / 8192MiB | 1% Default |

| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|==================================================|
| 0 1304 C+G Insufficient Permissions N/A |
| 0 3104 C+G …rogram Files\Microsoft VS Code\Code.exe N/A |
| 0 6108 C+G …dows.Search_cw5n1h2txyewy\SearchApp.exe N/A |
| 0 6516 C+G C:\Windows\explorer.exe N/A |
| 0 7896 C+G …w5n1h2txyewy\InputApp\TextInputHost.exe N/A |
| 0 9740 C+G …Chrome\Chrome\Application\360chrome.exe N/A |
| 0 9984 C+G …10731.0_x64__8wekyb3d8bbwe\Video.UI.exe N/A |
| 0 11764 C+G …t_cw5n1h2txyewy\ShellExperienceHost.exe N/A |
±----------------------------------------------------------------------------+

其中 CUDA Version: 竟然是 10.2

2 分析
其实是因为CUDA 有两种API,分别是 运行时 API 和 驱动API,即所谓的 Runtime API 与 Driver API。
nvidia-smi 的结果除了有 GPU 驱动版本型号,还有 CUDA Driver API的型号,这里是 10.0。
而nvcc的结果是对应 CUDA Runtime API:
3 补充说明
在安装CUDA 时候会安装3大组件,分别是 NVIDIA 驱动、toolkit 和 samples。NVIDIA 驱动是用来控制 GPU 硬件,toolkit 里面包括nvcc编译器等,samples或者说SDK 里面包括很多样例程序包括查询设备、带宽测试等等。上面说的 CUDA Driver API是依赖于 NVIDIA 驱动 安装的,而CUDA Runtime API 是通过CUDA toolkit 安装的。

怎么才能把驱动给改成一样的11.1呢?
后来在官网重新下载了驱动, 重新安装就可以了
官方驱动下载地址如下:
https://www.nvidia.cn/Download/index.aspx?lang=cn

版权声明:本文为CSDN博主「走错路的程序员」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/phker/article/details/121209082

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

目标检测-锚框概念和代码实现

前言 经历过图像分类后,进一步的就是更复杂的目标检测了,从这一章开始,将会不断记录图像目标检测中的学习经历,其中大多数思路以及代码来源,来自于李沐的动手学深度学习课程&#x

YOLO-V3-SPP详细解析

YOLO-V3-SPP 继前两篇简单的YOLO博文 YOLO-V1 论文理解《You Only Look Once: Unified, Real-Time Object Detection》YOLO-V2论文理解《YOLO9000: Bet