今天发现 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
暂无评论